Из-за чего фильтр в корне папки catalog открывает 404?

Ссылка скопирована
1 ответ

По вводным: вывел фильтр в файле sections.php комплексного компонента catalog

<?$APPLICATION->IncludeComponent( "bitrix:catalog.smart.filter", "", array( "IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"], "IBLOCK_ID" => $arParams["IBLOCK_ID"], "SECTION_ID" => 0, "FILTER_NAME" => $arParams["FILTER_NAME"], "PRICE_CODE" => $arParams["~PRICE_CODE"], "CACHE_TYPE" => $arParams["CACHE_TYPE"], "CACHE_TIME" => $arParams["CACHE_TIME"], "CACHE_GROUPS" => $arParams["CACHE_GROUPS"], "SAVE_IN_SESSION" => "N", "FILTER_VIEW_MODE" => $arParams["FILTER_VIEW_MODE"], "SECTION_TITLE" => "NAME", "SECTION_DESCRIPTION" => "DESCRIPTION", 'HIDE_NOT_AVAILABLE' => $arParams["HIDE_NOT_AVAILABLE"], "TEMPLATE_THEME" => $arParams["TEMPLATE_THEME"], 'CONVERT_CURRENCY' => $arParams['CONVERT_CURRENCY'], 'CURRENCY_ID' => $arParams['CURRENCY_ID'], "SEF_MODE" => $arParams['SEF_MODE'], "SEF_RULE" => "/catalog/filter/#SMART_FILTER_PATH#/apply/", "SMART_FILTER_PATH" => $_REQUEST["SMART_FILTER_PATH"], "PAGER_PARAMS_NAME" => $arParams["PAGER_PARAMS_NAME"], "INSTANT_RELOAD" => $arParams["INSTANT_RELOAD"], "SHOW_ALL_WO_SECTION" => "Y" ), $component, array('HIDE_ICONS' => 'Y') );?>

По вводным: в правилах обработки адресов задал правило

18 => array ( 'CONDITION' => '#^/catalog/filter/([a-z0-9_\-\/]+)/apply/#', 'RULE' => 'SMART_FILTER_PATH=$1&', 'ID' => '', 'PATH' => '/catalog/index.php', 'SORT' => 90, ),

По вводным: но при сортировке открывается 404, если выключить вывод 404 страницы, то при просмотре компонента выводится section.php, если отключить ЧПУ в фильтре, то все работает.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Максим Павлов Ответ

В Битриксе умный фильтр в корне /catalog/ часто отдаёт 404, если фильтр подключён в sections.php, но в параметрах комплексного компонента не совпадают URL-шаблоны, имя фильтра или правила ЧПУ. Сам компонент catalog.smart.filter может отрисоваться, но при применении фильтра Битрикс не понимает URL и считает его несуществующим.

Проверьте три вещи. Первая — FILTER_NAME должен совпадать у фильтра и списка товаров:

"FILTER_NAME" =&gt; "arrFilter"

"FILTER_NAME" =&gt; "arrFilter"

И в catalog.section должно быть то же имя:

"FILTER_NAME" =&gt; "arrFilter"

"FILTER_NAME" =&gt; "arrFilter"

Вторая — для корня каталога обычно нужен корректный SEF_RULE или работа внутри комплексного компонента. Если фильтр стоит отдельно, проверьте параметры:

"SEF_MODE" =&gt; "Y",
"SEF_RULE" =&gt; "/catalog/filter/#SMART_FILTER_PATH#/apply/"

"SEF_MODE" =&gt; "Y", "SEF_RULE" =&gt; "/catalog/filter/#SMART_FILTER_PATH#/apply/"

Третья — в настройках комплексного компонента должны быть заданы шаблоны URL для фильтра:

"SEF_URL_TEMPLATES" =&gt; array(
  "sections" =&gt; "",
  "section" =&gt; "#SECTION_CODE_PATH#/",
  "smart_filter" =&gt; "#SECTION_CODE_PATH#/filter/#SMART_FILTER_PATH#/apply/",
)

"SEF_URL_TEMPLATES" =&gt; array( "sections" =&gt; "", "section" =&gt; "#SECTION_CODE_PATH#/", "smart_filter" =&gt; "#SECTION_CODE_PATH#/filter/#SMART_FILTER_PATH#/apply/", )

Если фильтр нужен именно в корне без раздела, не все шаблоны каталога это нормально поддерживают. Иногда проще сделать отдельную страницу подборки или использовать раздел “все товары” с реальным SECTION_ID.

После правки обязательно сбросьте кеш компонента и проверьте, нет ли в urlrewrite.php старых конфликтующих правил. Также смотрите, не делает ли шаблон принудительный CHTTP::SetStatus('404'), если не найден раздел.

Итог: 404 появляется не из-за самого фильтра, а из-за несогласованных SEF-шаблонов и контекста раздела. Сведите к одному FILTER_NAME, проверьте smart_filter URL template и не используйте корень каталога как раздел, если шаблон ожидает SECTION_CODE_PATH.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно