Здравствуйте.
Сайт - каталог товаров, не магазин. Но сама структура каталога специфическая:
путь к разделу каталога - адрес_сайта/путь_из_символьных_кодов_разделов/
путь к товару каталога - адрес_сайта/products/символьный_код_товара/
Соответственно, прописаны подобные шаблоны ссылок в настройках инфоблока каталога.
Ясно, что разделов (как и подразделов) в каталоге может быть много, то вариант с физическими разделами отмели. Решили все автоматизировать.
В раздел /products/ выводим через компонент catalog, где в шаблоне настроен вывод sections.php и detail.php. А вот разделы выводим на сторонней странице page.php, для которой прописано правило в urlrewrite.php
[CODE]...
array(
"CONDITION" => "#^/([\\-_0-9a-zA-Z]+)/(.*)#",
"RULE" => "",
"ID" => "",
"PATH" => "/page.php",
),
[/CODE]То есть при определенных условиях просто бросаем на страницу page.php (если физически раздела нет) и уже на этой странице из адреса выцепляем код раздела, и по нему вызываем компонент catalog.section. Если же раздел не найден - редиректим на 404.php. Правило в urlrewrite.php записано самым последним, так что работе других компонентов не мешает.
Так же для раздела необходим и умный фильтр. Для этого, на страницу page.php, перед вызовом catalog.section выводится компонент catalog.smart.filter (в настройки прописаны полученные данные раздела).
Все работает, фильтр фильтрует, разделы показывает. Но встала задача - ЧПУ для умного фильтра.
Прописал настройки для умного фильтра:
[CODE]...
"SEF_MODE" => "Y",
"SEF_RULE" => "/#SECTION_CODE_PATH#/filter/#SMART_FILTER_PATH#/apply/",
"SMART_FILTER_PATH" => "/#SECTION_CODE_PATH#/filter/#SMART_FILTER_PATH#/",
...
[/CODE]
Соответственно, в обработчике адреса на странице page.php не беру во внимание все, что начинается с раздела filter (чтобы скрипт не подумал, что filter и все что после него в адресе - тоже подразделы).
В urlrewrite.php, перед правилом выше добавил:
[CODE]array(
"CONDITION" => "#^/([\\-_0-9a-zA-Z]+)/(.*)filter/(.*)/#",
"RULE" => "&/\$1/\$2filter/\$3/",
"ID" => "bitrix:catalog.smart.filter",
"PATH" => "/page.php",
), [/CODE]
В результате, когда выбираю параметры в фильтре - ссылка предварительного результата показывает верную ссылку (с чпу, все как надо), но когда кликаю по ней - на страницу переходит, но не фильтрует товары. А когда применяю фильтр (нажав кнопку "Применить" в фильтре) - переходит на страницу с НЕ ЧПУ адресом, а просто список параметров в адресе, как будто ЧПУ не настроено.
Что мог упустить?