Фильтрация по характеристикам
Характеристики товаров позволяют выполнять фильтрацию товаров по присвоенным значениям. Фильтр характеристик учитывает все остальные фильтры товаров (поиск, ограничение по категориям и т.д.).
Все значения отправляются в GET
-параметре features
метода получения списка товаров. Ключом каждого элемента
должен быть идентификатор характеристики. Значение может меняться в зависимости от типа характеристики (поле field_type
объекта характеристики).
Пример URL с фильтрацией по значениям двух характеристик:
https://api.zenky.io/v2/products?features[a70e121c-ef7a-4bad-842a-799a4109d131]=7c5733ca-8ca3-42b8-8610-1b84fa641dc0&features[f0419e14-4a5c-4af2-b601-79fc0b8bebb8]=a77cc7e3-e8ce-4fe3-a2da-9852b424f795
Типы полей
Выпадающий список
Значением фильтра "Одиночный выпадающий список" (select
) может быть ID конкретного значения.
Множественный список
Значением фильтра "Множественный выпадающий список" (multiple_select
) может быть массив нужных значений.
Фильтрация выполняется в режиме "ИЛИ". Для передачи нескольких значений внутри одной характеристики подставляйте
квадратные скобки []
в конец названия параметра:
https://api.zenky.io/v2/products?features[feature_id][]=first_value_id&features[feature_id][]=second_value_id&features[feature_id][]=third_value_id
Чекбоксы
Значением фильтра "Чекбоксы" (checkboxes
) может быть массив нужных значений.
Фильтрация выполняется в режиме "ИЛИ". Для передачи нескольких значений внутри одной характеристики подставляйте
квадратные скобки []
в конец названия параметра:
https://api.zenky.io/v2/products?features[feature_id][]=first_value_id&features[feature_id][]=second_value_id&features[feature_id][]=third_value_id
Диапазон
Значение фильтра "Диапазон" (range
) отличается от остальных фильтров. Вместо передачи идентификаторов значений
вам нужно передавать два значения, разделённые знаком тире (-
).
https://api.zenky.io/v2/products?features[feature_id]=1-5
https://api.zenky.io/v2/products?features[feature_id]=1.3-1.7
Тип значений
Характеристика с типом поля range
так же должна определять тип значений дипазона (поле range_type
) —
integer
для целочисленных значений, либо float
для значений с плавающей точкой.
Основываясь на значении поля range_type
должен определяться тип отправляемых значений. На стороне сервера
принятые значения так же будут преобразованы в соответствующий тип данных, по которым будет проводиться сравнение.
Минимальные и максимальные значения
У каждой характеристики имеется список значений. У значений характеристики с типом поля range
так же будет
присутстовать заполненное поле range_value
, которое следует использовать для вычисления минимального и максимального
значений фильтра.