Убрать часть url (uri tickets)
Здравствуйте. Подскажите как доделать правильно? Как сделать uri всех статей (тиккетов) вида site.ru/statia
В наличии структура:
Чтобы убрать «категория» отключил «Использовать вложенные URL» получил site.ru/подкатегория/статья
Чтобы убрать «подкатегория» использовал плагин на событие OnDocFormSave (в tickets такой возможности не нашел, а у секии дочерние документы: %alias-%id)
Но возникла проблема, при сохранении документа через форму tickets с фронта, происходит перенаправление на site.ru/подкатегория/статья и естесвенно выдает 404, так как статья уже на site.ru/statia.
Подумал, но видимо плохо, что можно использовать autoRedirector и он должен создать правило перехода с site.ru/подкатегория/статья на site.ru/statia, но то ли он отрабатывает раньше плагина, то ли еще почему — не работает.
1. может быть есть решение, через autoRedirector, или любое другое
2. какие есть «подводные камни» в использовании плагина для обрезки uri
В наличии структура:
категория 1 (ресурс контейнер)
- подкатегория (раздел с тиккетами)
...............
- подкатегория (раздел с тиккетами)
категория 2 (ресурс контейнер)
- подкатегория (раздел с тиккетами)
...............
- подкатегория (раздел с тиккетами)
URL по умолчанию получается site.ru/категория/подкатегория/статьяЧтобы убрать «категория» отключил «Использовать вложенные URL» получил site.ru/подкатегория/статья
Чтобы убрать «подкатегория» использовал плагин на событие OnDocFormSave (в tickets такой возможности не нашел, а у секии дочерние документы: %alias-%id)
<?php
$parents = $resource->get('parent');
if ($modx->event->name != "OnDocFormSave") {return;}
$alias = $resource->get('uri');
$uriedit = preg_replace('|\S+/|isU', '', $alias);
$resource->set('uri', $uriedit);
$resource->save();
return;
получил то, что хотел site.ru/statiaНо возникла проблема, при сохранении документа через форму tickets с фронта, происходит перенаправление на site.ru/подкатегория/статья и естесвенно выдает 404, так как статья уже на site.ru/statia.
Подумал, но видимо плохо, что можно использовать autoRedirector и он должен создать правило перехода с site.ru/подкатегория/статья на site.ru/statia, но то ли он отрабатывает раньше плагина, то ли еще почему — не работает.
1. может быть есть решение, через autoRedirector, или любое другое
2. какие есть «подводные камни» в использовании плагина для обрезки uri
Комментарии: 4
код плагина
<?php
$parents = $resource->get('parent');
if ($modx->event->name != "OnDocFormSave") {return;}
$alias = $resource->get('uri');
$uriedit = preg_replace('|\S+/|isU', '', $alias);
$resource->set('uri', $uriedit);
$resource->save();
return;
а в сторону заморозки URI не смотрели?
Смотрел, они заморожены. Проблема возникает при добавлении с фронта
Нашел решение для исключения ресурсов-контейнеров из урл у Ильи Уткина.
Попробовал у себя на сайте, все отлично работает.
Вот статья: Исключение алиаса ресурса в URL дочерних ресурсов
Может кому пригодится!
Попробовал у себя на сайте, все отлично работает.
Вот статья: Исключение алиаса ресурса в URL дочерних ресурсов
Может кому пригодится!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.