Почему в Bitrix smart.filter начинает игнорировать PREFILTER_NAME, если выбираются фильтры, относящиеся к торговым предложениям?
Не могу понять, почему происходит какая-то черная магия с моей фильтрацией.
Есть у меня catalog.smart.filter, в PREFILTER_NAME которого я передаю 10 айдишников товаров.
И есть catalog.section, в который я закидываю в FILTER_NAME тот фильтр, который я получил из catalog.smart.filter
Все работает отлично, если я выбираю какие-то фильтры, которые относятся к товарам - "бренд", "Вид товара" например. А вот как только я выбираю "размер", который есть только у торговых предложений, то умный фильтр отрабатывает и выдает ВСЕ ТОВАРЫ КАТАЛОГА, где есть нужный размер.
То есть ограничение фильтра, что надо искать только среди моих 10 айдишников просто игнорируется.
Не понимаю, почему.
P.S. про 10 айдишников - условность, они будут меняться динамически.
PetrPo, самое удивительное, что в $GLOBALS['smartFilterCustom'] (filter_name, который я подаю в section) все правильно - выводится тот же список айдишников, добавляется еще массив OFFERS и в нем указывается характеристика и ее нужное значение:
PetrPo, делаю на отдельной тестовой странице, но фильтр у меня работает по всему каталогу, а не по отдельному разделу SHOW_ALL_WO_SECTION стоит "Y", SECTION_ID и SECTION_CODE, действительно, не указаны.
Неужели из-за этого фильтр падает?
PetrPo, отметил, мне не жалко, только в моем случае, это все-таки не решение(
думаю, надо будет в компоненте тогда вручную делать условие при выводе, соответсвует ли изначальному массиву или нет.
po4emu4ka2020, расскажу, не поверишь)) в catalog.section используется класс Bitrix\Iblock\Component\ElementList и вот в нем для гетлиста мерджится массив глобального фильтра и массив с внутренним фильтром array_merge($globalFilter, $filterFields) и вот в $filterFields тоже есть ключ =ID и при мердже он затирает твой =ID, вот так совпадение))
В catalog.section используется класс Bitrix\Iblock\Component\ElementList и вот в нем для гетлиста мерджится массив глобального фильтра и массив с внутренним фильтром array_merge($globalFilter, $filterFields) и вот в $filterFields тоже есть ключ =ID и при мердже он затирает твой =ID