Убрать часть url (uri tickets)

Здравствуйте. Подскажите как доделать правильно? Как сделать uri всех статей (тиккетов) вида site.ru/statia
В наличии структура:
категория 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
Борис И
22 апреля 2016, 15:25
modx.pro
2 672
0

Комментарии: 4

Борис И
09 июня 2016, 08:23
0
код плагина
<?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;
    Klike
    09 июня 2016, 09:33
    0
    а в сторону заморозки URI не смотрели?
      Борис И
      09 июня 2016, 10:04
      0
      Смотрел, они заморожены. Проблема возникает при добавлении с фронта
      Андрей Шевяков
      26 января 2017, 11:02
      0
      Нашел решение для исключения ресурсов-контейнеров из урл у Ильи Уткина.
      Попробовал у себя на сайте, все отлично работает.
      Вот статья: Исключение алиаса ресурса в URL дочерних ресурсов
      Может кому пригодится!
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        4