Фильтрация по списку с автодополненинем
Заметил своеобразное поведение при фильтрации через mFilter2.
Если у товара несколько опций (например: опция1, опция2), то фильтрация происходит по принципу «или». Т.е. в фильтре выводится чекбокс с именем «опция1, опция2», но при выборе его, выводятся все товары, у которых есть хотя бы одна из этих опций. А нужно, чтобы выводились товары, у которых указаны обе опции.
Можно ли сделать это штатными средствами? Или подскажите, в какую сторону думать. Спасибо.
Если у товара несколько опций (например: опция1, опция2), то фильтрация происходит по принципу «или». Т.е. в фильтре выводится чекбокс с именем «опция1, опция2», но при выборе его, выводятся все товары, у которых есть хотя бы одна из этих опций. А нужно, чтобы выводились товары, у которых указаны обе опции.
Можно ли сделать это штатными средствами? Или подскажите, в какую сторону думать. Спасибо.
Комментарии: 6
Не знаю расстроишься ты или обрадуешься, но «из коробки» mFilter2 фильтрует по условию И. Если у тебя не так то, либо кто-то написал свой класс фильтрации, либо что-то у тебя не правильно настроено.
Спасибо за ответ. Я и сам уверен, что так и должно быть, но… факт.
Буду искать, что у меня не так. Теперь я, хоть понимаю куда искать)
Буду искать, что у меня не так. Теперь я, хоть понимаю куда искать)
Все правильно работает.
Допустим 2 товара:
1. Размер — XL, Цвет — Синий, Красный.
1. Размер — XL, Цвет — Синий.
Ты ставишь в фильтре размер XL — видим оба товара, т.к. они есть размера XL.
Добавляем галочку Синий — видим оба товара, т.к. они есть размера XL и синего цвета.
Ставим галочку Красный — видим оба товара, т.к. по логике компонента мы хотим увидеть товары, которые размера XL, а цвет нас интересует и синий и красный, т.е. любой из них (синий ИЛИ красный).
Если нужно в 3м случае видеть только товар 1 — то придется дописывать свою логику, mFilter2 так не может.
Но! тогда представь, что будет, если у тебя есть еще Товар 3 размера L. В этом случае, ты выбираешь себе джинсы, но знаешь, что на тебе хорошо сидит то L, то XL, смотря от бренда. Ставишь обе галочки — и что? Товаров будет 0, вряд ли ты этого ждал.
Допустим 2 товара:
1. Размер — XL, Цвет — Синий, Красный.
1. Размер — XL, Цвет — Синий.
Ты ставишь в фильтре размер XL — видим оба товара, т.к. они есть размера XL.
Добавляем галочку Синий — видим оба товара, т.к. они есть размера XL и синего цвета.
Ставим галочку Красный — видим оба товара, т.к. по логике компонента мы хотим увидеть товары, которые размера XL, а цвет нас интересует и синий и красный, т.е. любой из них (синий ИЛИ красный).
Если нужно в 3м случае видеть только товар 1 — то придется дописывать свою логику, mFilter2 так не может.
Но! тогда представь, что будет, если у тебя есть еще Товар 3 размера L. В этом случае, ты выбираешь себе джинсы, но знаешь, что на тебе хорошо сидит то L, то XL, смотря от бренда. Ставишь обе галочки — и что? Товаров будет 0, вряд ли ты этого ждал.
То, что Вы описываете присуще типу опции множественный список. В моем случае список с авто дополнением. Из примера выше, получим 2 блока с чекбоксами:
1. Размер
— XL
2. Цвет
— Красный
— Синий, Красный
— Синий
И при выборе «Синий, Красный» будет показана оба товара, т.к. сработало условие по принципу ИЛИ
Как мне кажется, так не должно быть.
1. Размер
— XL
2. Цвет
— Красный
— Синий, Красный
— Синий
И при выборе «Синий, Красный» будет показана оба товара, т.к. сработало условие по принципу ИЛИ
Как мне кажется, так не должно быть.
Касательно второй строчки здесь
2. Цветстоит посмотреть на параметр values_delimeter сниппета mFilter2. В нем по умолчанию запятая, и такая же запятая стоит в значении опции. Я в этом параметре обычно указываю точку с запятой.
— Красный
— Синий, Красный
— Синий
Была такая же проблема, как написал Алексей выше избавьтесь от запятых в значениях на другой символ и будет счастье.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.