Битрикс умный фильтр ajax

Не нравится мне работа режима AJAX_MODE в компоненте catalog. Вот хоть убей, но ничего с битриксом в лучшую сторону с годами не меняется. Как был коммерческим продуктом, так им и остался. Где технологичность? Короче простое решение обновления списка с помощью ajax.get

В шаблоне bitrix:catalog.smart.filter редактируем script.js — ищим функцию JCSmartFilter.prototype.postHandler и редактируем следующее

.catalog-list — селектор который необходимо обновить. Естественно jQuery должен быть подключен.

Умный фильтр битрикса не фильтрует по всем товарам без раздела, исправить можно таким костылем

//begin
$db_list = CIBlockSection::GetList(Array($by=>$order), array(«IBLOCK_ID» => $this->IBLOCK_ID), true);
while($ar_result = $db_list->GetNext())
<
$db_listt[] = $ar_result[‘ID’];
>
$Select = Array(«ID», «IBLOCK_ID»);
$FFilter = Array(«INCLUDE_SUBSECTIONS» => «Y», «IBLOCK_ID» => $this->IBLOCK_ID, «SECTION_ID» => $db_listt);
$FFilter2 = $this->makeFilter($FILTER_NAME);
$topfilter = array_merge($FFilter2, $FFilter);
$res = CIBlockElement::GetList(Array(), $topfilter, false, false, Array());
while($ar_fields = $res->GetNext())
<
$arResultt[] = array(
«ID» => $ar_fields[‘ID’],
);
>
//end

$arResult[«ELEMENT_COUNT»] = count($arResultt);
//$arResult[«ELEMENT_COUNT»] = CIBlockElement::GetList(array(), $arFilter, array(), false);

Есть комплексный компонент bitrix:catalog, в нём уже выводится и умный фильтр и сами позиции товаров. Удобнее, возможно, разделить компонент на умный фильтр bitrix:catalog.smart.filter и на компонент секций каталога bitrix:catalog.section.

Но, считаю, должен фильтр работать и в комплексном компоненте как мы этого от него ожидаем.

Этого же не происходит.

Решаем вопрос. Копируем компонент bitrix:catalog в своё пространство имен и дальше работаем уже с decor:catalog.

Идем в bitrix/components/decor/catalog.smart.filter/templates/.default/script.js

заменяем там кусок кода на

И это не работает:(

Тогда в самый низ функции JCSmartFilter.prototype.postHandler добавляем

Можно ещё включить в компоненте catalog галочку "Использовать режим AJAX"

(он же параметр "AJAX_MODE" => "Y"), но мне больше нравится, когда страница перезагружается при применении фильтров или выбора товара.

almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.

Оцените статью
Добавить комментарий