Статьи
Умный фильтр только на странице списка товаров
Необходимо скопировать шаблон компонента каталог 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;?>
Если все сделано верно то фильтр будет отображаться только на странице со списком товаров.
Возврат к списку