Как исключить из адреса ссылки раздел?
Всем привет. Столкнулся с задачей, когда у сайта путь со вложеностями такой:
http://site.ru/catalog/igrushki/minoni/tovar.html
а нужно из адреса вырезать для всех остальных /catalog/, чтобы получилось так:http://site.ru/igrushki/minoni/tovar.html
А раздел с каталогом должен в админке остаться неизменным, т.к. все категории товаров и товары идут дочерними документами от него. Может есть готовое решение? Комментарии: 10
Наверно только через правила в .htaccess но как я не подскажу, не силен в регулярных выражениях.
Вот нашел:
blogerator.ru/page/fajl-primery-htaccess-redirekt-dostup
16. Удаляем «category» из URL
Для изменения ссылки yourdomain.com/category/blue на yourdomain.com/blue, просто добавьте следующий код в конце вашего .htaccess файла.
#Удаляем category из URL
Вот нашел:
blogerator.ru/page/fajl-primery-htaccess-redirekt-dostup
16. Удаляем «category» из URL
Для изменения ссылки yourdomain.com/category/blue на yourdomain.com/blue, просто добавьте следующий код в конце вашего .htaccess файла.
#Удаляем category из URL
RewriteRule ^category/(.+)$ http://www.site.com/$1 [R=301,L]
В MODX есть такая стандартная опция: «Заморозить ссылку».
Для текущих товаров прогнать через консоль постановку галочки и удаление из ссылки «catalog», а для новых создать плагин, который будет замораживать ссылку без «catalog».
Для текущих товаров прогнать через консоль постановку галочки и удаление из ссылки «catalog», а для новых создать плагин, который будет замораживать ссылку без «catalog».
А есть пример плагина? С плагинами если честно не очень дружу.
В минимальном варианте что-то типа такого:
if ($modx->event->name == 'OnDocFormSave' ) {
if(!$uriOverRide = $resource->get('uri_override')){
$uri = $resource->get('uri');
$pattern = 'catalog/';
$uri = preg_replace($pattern, '', $uri);
$resource->set('uri', $uri);
$resource->set('uri_override', 1);
$resource->save();
}
}
Не могу сейчас сказать нужно ли тут сохранение или нет.
Нужно. Это событие срабатывает уже после сохранения объекта.
В документации написано, что не нужно rtfm.modx.com/revolution/2.x/developing-in-modx/basic-development/plugins/system-events/ondocformsave
Смотрю исходники modResourceUpdateProcessor и modObjectUpdateProcessor — не вижу, где после события OnDocFormSave происходит сохранение ресурса.
Да, видимо, в доках ошибочка)
В документации написано про TV.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.