+7 (987) 026-06-36
Написать в Telegram

Оставить заявку
stanislav_web

Не работает умный фильтр в корне каталога 1С-Битрикс

Не работает умный фильтр в корне каталога 1С-Битрикс Объясняю и показываю примеры решений разных задач с которыми сталкивался и сталкиваюсь в процессе работы

Не работает умный фильтр в корне каталога 1С-Битрикс

Объясняю и показываю примеры решений разных задач с которыми сталкивался и сталкиваюсь в процессе работы

📅 27 марта 2024

👁‍🗨 691

🔥 0

Не работает умный фильтр в корне каталога 1С-Битрикс

Умный фильтр (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"]

Все. Теперь фильтр работает в корне каталога.