Задать вопрос
@po4emu4ka2020

Почему в Bitrix smart.filter начинает игнорировать PREFILTER_NAME, если выбираются фильтры, относящиеся к торговым предложениям?

Не могу понять, почему происходит какая-то черная магия с моей фильтрацией.

Есть у меня catalog.smart.filter, в PREFILTER_NAME которого я передаю 10 айдишников товаров.
И есть catalog.section, в который я закидываю в FILTER_NAME тот фильтр, который я получил из catalog.smart.filter

Все работает отлично, если я выбираю какие-то фильтры, которые относятся к товарам - "бренд", "Вид товара" например. А вот как только я выбираю "размер", который есть только у торговых предложений, то умный фильтр отрабатывает и выдает ВСЕ ТОВАРЫ КАТАЛОГА, где есть нужный размер.

То есть ограничение фильтра, что надо искать только среди моих 10 айдишников просто игнорируется.
Не понимаю, почему.

P.S. про 10 айдишников - условность, они будут меняться динамически.
  • Вопрос задан
  • 1426 просмотров
Подписаться 1 Простой 16 комментариев
Решения вопроса 1
@PetrPo
В catalog.section используется класс Bitrix\Iblock\Component\ElementList и вот в нем для гетлиста мерджится массив глобального фильтра и массив с внутренним фильтром array_merge($globalFilter, $filterFields) и вот в $filterFields тоже есть ключ =ID и при мердже он затирает твой =ID

То есть в $prefilterCustom перед ID надо убрать =
$prefilterCustom = array(
  "ID" => $arElements,
);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы