Умный фильтр только на странице списка товаров
Партнер 1С-Битрикс
Разработка и поддержка сайтов на 1С-Битрикс
  8 (8152) 78-54-20
Закрыть

Статьи

Умный фильтр только на странице списка товаров

Необходимо скопировать шаблон компонента каталог bitrix:catalog и внести в него некоторые поправки в файл section.php и section_vertical.php (можно все сделать в section_vertical.php)

В файле section.php: /bitrix/templates/*ваш шаблон сайта*/components/bitrix/catalog/*шаблон компонента*/section.php
Перед подключением вертикального или горизонтального шаблона:
<div class="row">
<?
if ($isVerticalFilter)
    include($_SERVER["DOCUMENT_ROOT"]."/".$this->GetFolder()."/section_vertical.php");
else
    include($_SERVER["DOCUMENT_ROOT"]."/".$this->GetFolder()."/section_horizontal.php");
?>
Вставьте следующий код:
/* Умный фильтр только для списка товаров */
if(CModule::IncludeModule("iblock")){
    $arFilter = Array(
        'IBLOCK_ID'=>$arParams["IBLOCK_ID"],
        'GLOBAL_ACTIVE'=>'Y',// только активные
        'SECTION_ID'=>
$arResult['VARIABLES']['SECTION_ID']);// ID текущего раздела
    $dbRes = CIBlockSection::GetList(array(), $arFilter, true);// получаем подразделы раздела
    while($arSectionID = $dbRes->GetNext()){
        $haveSections[] = $arSectionID['ID'];// записываем ID секций в массив
    }
}
В файле section_vertical.php или section_horizontal.php оберните фильтр в условие:
        <?if (empty($haveSections)):// если массив с разделами пуст то выводим фильтр?>
        <?$APPLICATION->IncludeComponent(
            "bitrix:catalog.smart.filter",
            "",
            array(
                "IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"],
                "IBLOCK_ID" => $arParams["IBLOCK_ID"],
                "SECTION_ID" => $arCurSection['ID'],
                "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"],
                "XML_EXPORT" => "Y",
                "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" => $arResult["FOLDER"].$arResult["URL_TEMPLATES"]["smart_filter"],
                "SMART_FILTER_PATH" => $arResult["VARIABLES"]["SMART_FILTER_PATH"],
                "PAGER_PARAMS_NAME" => $arParams["PAGER_PARAMS_NAME"],
                "INSTANT_RELOAD" => $arParams["INSTANT_RELOAD"],
            ),
            $component,
            array('HIDE_ICONS' => 'Y')
        );
        ?>
        <?endif;?>

Если все сделано верно то фильтр будет отображаться только на странице со списком товаров.




Возврат к списку

Наши клиенты