Чтобы умный фильтр (bitrix:catalog.smart.filter) стал работать в корне каталога, без указания раздела надо провести следующие манипуляции.
Добавить в параметры фильтра «SHOW_ALL_WO_SECTION» => «Y».
В параметрах компонента bitrix:catalog ЧПУ фильтра выглядит, например, так
#SECTION_CODE#/filter/#SMART_FILTER_PATH#/apply/
Нам такой путь не подойдёт, поэтому сделаем, чтобы ЧПУ для корня каталога формировалось правильно, без раздела. В параметрах компонента добавим
"smart_filter_catalog" => "filter/#SMART_FILTER_PATH#/apply/"
а в файле sections.php компонента catalog в параметрах bitrix:catalog.smart.filter заменяем параметр «SEF_RULE».
"SEF_RULE" => "$arParams["SEF_FOLDER"].$arParams["SEF_URL_TEMPLATES"]["smart_filter_catalog"]"
Теперь 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"]
Теперь всё работает кроме обработки ЧПУ компонентом каталога. Для исправления нужно скопировать компонент в своё пространство имён (или в bitrix в директории local), и в файле component.php добавить условие примерно на 75 строке, там же где уже есть аналогичные условия
if ($componentPage === "smart_filter_catalog") $componentPage = "sections";