Не работает умный фильтр в корне каталога 1С-Битрикс
Объясняю и показываю примеры решений разных задач с которыми сталкивался и сталкиваюсь в процессе работыНе работает умный фильтр в корне каталога 1С-Битрикс
Объясняю и показываю примеры решений разных задач с которыми сталкивался и сталкиваюсь в процессе работы
📅 27 марта 2024
👁🗨 691
Умный фильтр (bitrix:catalog.smart.filter) работает и в корне каталога, без указания раздела. Для этого надо добавить в параметры фильтра "SHOW_ALL_WO_SECTION" => "Y".
Однако, такой вариант работает только без ЧПУ. Исправим это.
В параметрах компонента bitrix:catalog ЧПУ фильтра выглядит, например, так
#SECTION_CODE#/filter/#SMART_FILTER_PATH#/apply/
Сначала сделаем, чтобы ЧПУ для корня каталога формировалось правильно, без раздела. В файле sections.php компонента catalog в параметрах bitrix:catalog.smart.filter заменяем
"SEF_RULE" => $arResult["FOLDER"].$arResult["URL_TEMPLATES"]["smart_filter"]
на
"SEF_RULE" => "/catalog/filter/#SMART_FILTER_PATH#/apply/"
Теперь url формируется правильно, но в фильтр выбранные свойств не видит.
Это происходит потому, что переменная $arResult["VARIABLES"]["SMART_FILTER_PATH"] в корне каталога пустая.
Для решения этой проблемы создаем следующее правило обработки адресов:
Условие: #^/catalog/filter/([a-z0-9_\-\/]+)/apply/#
Файл: /catalog/index.php
Правило: SMART_FILTER_PATH=$1&
Получается для каталога два правила, одно, созданное компонентом, второе вручную
Осталось в файле sections.php в параметрах bitrix:catalog.smart.filter заменить
"SMART_FILTER_PATH" => $arResult["VARIABLES"]["SMART_FILTER_PATH"]
на
"SMART_FILTER_PATH" => $_REQUEST["SMART_FILTER_PATH"]
Все. Теперь фильтр работает в корне каталога.