Фильтрация по характеристикам


Характеристики товаров позволяют выполнять фильтрацию товаров по присвоенным значениям. Фильтр характеристик учитывает все остальные фильтры товаров (поиск, ограничение по категориям и т.д.).

Все значения отправляются в 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, которое следует использовать для вычисления минимального и максимального значений фильтра.