1. Если я отмечу в одном параметре фильтра значения: "1" и "2", то отфильтруются элементы, в которых имеется хотя-бы одно из выбранных значений параметра, а часто нужно что-бы обязательно присутствовали оба!
2. А вот если я отмечу в разных параметрах фильтра значения: "1" и "2", то наоборот -- отфильтруются элементы, в которых имеется сразу оба из выбранных значений параметров, а часто нужно выбрать товары где есть хотя бы одно!
--------->< ---------
Цвет:
- Красный
- Черный
- Белый
- Металлик
--------->< ---------
Каталог автомобилей, мы выбираем краску и черную и одновременно белую?
Если немного переиначить: нам нужен данный автомобиль или в красном цвете или в белом, тут уже нужно каталог с СКУ (а фильтр по ним в 12.5)
Второе тоже странно. Все(не вс
ё) делают аналгично яндексу.Каталог одежды.
Цвет:
- Красный
- Синий
- Белый
Мы выбираем цвет: и красный и синий и одновременно белый -- потому, что мы хотим себе футболку под российский триколор! И нас никак не устроит присутствие всего лишь только какого-нибудь одного или даже только двух из перечисленных цветов -- нам строго обязательно нужно присутствие сразу всех 3-х цветов!
И случаев каталогов с такой необходимостью логики работы фильтра (AND) так же много как и случаев где нужно OR.
Хотя в принципе данную логику можно реализовать к примеру так:
После компонента фильтра написать небольшой кусочек модификации фильтра
Я хочу выбрать на сайте суши, в которых есть и сыр и тунец одновременно!
Ну, что мне толку от выборки суш, в которых есть по одному из ингредиентов, которые я хочу получить В ОДНОМ, в ОДНОМ продукте ЗА РАЗ!
Скриншот:
PS: А потом слышим: "Фильтр Битрикса -- тупой..."
Шампиньоны
Есть/Нет
Сыр
Есть/Нет
итд
Ну не изврат ли???
Другой кейс -- база данных недвижимости. Свойство -- тип балкона, значения -- лоджия, балкон, веранда итд
Я хочу увидеть все квартиры с лоджией и с балконом одновременно, а "умный фильтр" показывает мне все квартиры где есть хотя бы одно из двух -- "ищи сам...."
Важное замечание: если будет сделана фильтрация по значениям множественного свойства типа список с логикой И, то обязательно нужно "затенять" невозможные значения при выборе одного из них.
Резюме. Нужно две логики работы фильтрации для множественного свойства типа список:
Случай когда нужна логика "ИЛИ"
Случай когда нужна логика "И"
Это было описание случая для логики И/ИЛИ внутри значений одного параметра. Но, аналогичные же дела обстоят и с логикой И/ИЛИ при фильтрации по разным параметрам фильтра, а не по одному как в приведенных выше скриншотах...
Значит нужно менять этот фильтр на другой "рабочий".
К примеру вот эта выборка:
Смотрим свойство "Удобства".
Нам нужен номер с WiFi и утренними завтраками.
Нам не нужен номер где есть одно или другое по отдельности.
Кто делал самостоятельно такую логику в коде? Где хоть копать подскажите?
Единственное, он переделывает логику на И для всех полей. Если у кого-то есть поля с диапазонами, наверное надо будет еще проверять на наличие символа "=" в начале названия поля. Если нужно сохранить логику ИЛИ для некоторых полей, думаю можно добавить их в параметры компонента и перед преобразованием фильтра проверять на совпадение с этим списком, и не менять если совпало.
Вот чел написал код. У меня сработал без изменений.