Корекктное правило в urlrewrite
Имеется ссылка
mysite.ru/catalog/dlya-nee/obuv/?designer=ALOHAS
которая фильтрует раздел /dlya-nee/obuv/ по параметру ?designer=... На выходе должны получить
mysite.ru/catalog/dlya-nee/obuv/designer/alohas/
Обрабатываю в urlrewrite ее так:
array (
'CONDITION' => '#^/catalog/(.*?)/designer/([a-zA-Z/-]+)/#',
'RULE' => '/catalog/$1/?designer=$2',
'SORT' => 10,
)
Но получается так что выводит на страницу все разделы, как корректно составить правило чтобы отображало только то, что расположено в /catalog/dlya-nee/obuv/ ?
Ответы (2 шт):
Добавь на страницу, куда происходит переход, код:
<?
if ($USER->IsAdmin()) {
echo '<pre>';
echo $_SERVER['REAL_FILE_PATH'];
echo '</pre>';
}
?>
Так ты увидишь, какой адрес формируется через urlrewrite. А то может оказаться, что срабатывает вовсе не то правило, которое ты ожидаешь.
Оказалось всё просто.
В urlrewrite.php добавил правило
array ( 'CONDITION' => '#^/catalog/(.*?)/designer/([a-zA-Z/-]+)/#', 'RULE' => 'designer=$2', 'ID' => 'bitrix:catalog', 'PATH' => '/catalog/designer.php', 'SORT' => 101, ),
Важно чтобы SORT был выше чем у правила для самого каталога. Создал в директории каталога файл designer.php и продублировал в нем содержимое файла index.php.
Добавил в параметры компонента
"SEF_URL_TEMPLATES" => array(
....
'designer' => '#SECTION_CODE_PATH#/designer/#DESIGNER_NAME#/',
...
)
Создал в шаблоне компонента файл designer.php и продублировал в нем содержимое файла section.php.