+17

Отношения между значениями параметра при фильтрации списка товаров (И/ИЛИ)

Константин Тарасов 7 лет назад обновлен stbichkov 7 лет назад 3

Здравствуйте.


При работе с товарами, которые имеют сложный состав, требуется иметь возможность менять отношения между значениями параметра. 

Чтобы было понятно объясню на примере:

Есть, например, рубашки или футболки. У них есть параметр "Состав", который содержит значения "шерсть", "хлопок", "акрил", "лён" и т.п. У каждого товара может быть задано одно или несколько значений данного параметра, что понятно, поскольку изделие может быть изготовлено из разных нитей, в т.ч. и из нескольких видов.


При отображении в фильтре списка товаров категории, мы видим все значения этого параметра. И когда выбираем значение "шерсть" то будут показаны все товары содержащие шерсть в своем составе. Теперь, если добавить отметку у значения "хлопок", то будут показаны изделия которые содержат в себе шерсть, хлопок и шерсть и хлопок одновременно. При этом, ожидалось, что при выборе двух значений будут показаны только товары содержащие оба материала в своем составе.

Вывод: это происходит по причине того, что отношения в фильтре товаров между значениями одного параметра производится по ИЛИ. Т.е. или шерсть или хлопок. Хотя в данном случае требуется отношение по И.


Решение: в диалоге добавления параметра сделали радио-кнопку с двумя значениями параметра: (*) По ИЛИ ( ) По И, который определяет отношение между значениями при фильтрации списка товаров. 

в теории можно воспользоваться этой конструкцией при выборе параметра "шерсть"
$.post('/collection/all.json', {
    characteristics: [1291117812911180]
  })
  .done(function (products{
    console.log(products);
  })

при выборе параметра "хлопок" опять использовать эту конструкцию
у нас будут 2 массива с данными, найти совпадения в них - не проблема, после этого всего вывести повторяющиеся товары из двух массивов

сложно - но можно

Это да, но это костыль. :) Т.е. принципиально это не решает имеющуюся проблему.

всяко будет быстрее, чем это реализуется в insales;)

Сервис поддержки клиентов работает на платформе UserEcho