Как заставить композит работать на страницах умного фильтра

Проблема возникает, потому что при выбранном фильтре компонент catalog.smart.filter голосует «против» и композит перестаёт работать. Cовет подойдёт тем, кто использует catalog.smart.filter в шаблоне комплексного компонента, например, section.php.

Что бы заставить композит работать на страницах фильтрации, нужно умный фильтр завернуть во frame:

 

$frame = $this->createFrame()->begin('');
$APPLICATION->IncludeComponent('bitrix:catalog.smart.filter', 'v1', [
    'IBLOCK_TYPE' => $arParams['IBLOCK_TYPE'],
    'IBLOCK_ID' => $arParams['IBLOCK_ID'],
    'SECTION_ID' => $arResult['VARIABLES']['SECTION_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'],
    'CACHE_FILTER' => $arParams['CACHE_FILTER'],
    'SAVE_IN_SESSION' => $arParams['SAVE_IN_SESSION'],
    'SECTION_CODE' => $arResult['VARIABLES']['SECTION_CODE'],
    'HIDE_NOT_AVAILABLE' => $arParams['HIDE_NOT_AVAILABLE'],
    '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'],
    'DISPLAY_ELEMENT_COUNT' => 'Y',
    ], $component, ['HIDE_ICONS' => 'Y']);
$frame->end();

Правда, при использовании такого метода нужно поставить размер кеша соответствующий кол-ву возможных закешированных страниц. Я ставлю обычно 2Гб.

Добавить комментарий

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