Задать вопрос

Фильтрация по диапазону свойства у товара?

Добрый день.

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

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

Свойство диапазон планирую реализовать путем кастомизации штатного свойство строка и хранить первое значение в VALUE второе в DESCRIPTION и диапазон между VALUE и DESCRIPTION должен каким то образом срабатывать в фильтре.

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

Возможно я не очень понятно изложил суть проблемы, приведу пример.

Допустим есть товар у есть свойство межцентровое расстояние это свойство должно быть задано у товара в виде диапазона 160-320 (мм), в умном фильтре я ставлю например значение 180 или диапазон 150-180 и данный товар должен попасть в выборку.
  • Вопрос задан
  • 587 просмотров
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
randomizex
@randomizex
http://resume.web-ivan.ru
Попробую порассуждать на примере вашего свойства межцентровое расстояние 160-320 (мм)
В фильтре в виде диапазона (линия с ползунками) - может отображаться только цифровое свойство и значений у нас как будто 2...
Но если мы заведем множественное свойство MEZCENTR_SIZE и впишем у товара 2 значения 160,320
то фильтр в виде диапазона будет искать только по этим 2м точкам на его линии то есть товар будет находиться только если в выбранный диапазон на фильтре будет попадать хотя бы одна из точек
180-350 или 100-200 товар будет найден, а вот при 180-290 не будет хотя нам именно этого надо добиться...

Дело в том что такой фильтр имеет 2 бегунка
выставляющие условие 2м инпутам на свойство MEZCENTR_SIZE. Левый MEZCENTR_SIZE(от). Правый MEZCENTR_SIZE(до).

Есть 2 варианта как сделать то что нам надо.
1) Простой и не желательный.
Задавать в свойство MEZCENTR_SIZE не 2 значения (мин/макс) а добавлять еще прямо штук десять промежуточных. Тогда точки от этого свойства у товара равномерно расположатся по линии и будет сложно поставить диапазон так чтобы не одна точка между нашими мин/макс значениями в него не попала.
Понятное дело - такой подход понижает эффективность фасетного индекса.
Но иногда и так можно поступить. «Переходи на Тёмную сторону Силы. У нас есть печеньки»

2) Более затратный но правильный.
Надо создать 2 разных свойства (для мин/макс значений) MEZCENTR_SIZE_MIN и MEZCENTR_SIZE_MAX
Но не выводить их в виде 2х разных диапазонов, а кастомизировать вывод в самом компоненте умного фильтра.
Диапазон кастомного бегунка фильтра должен начинаться от минимального значения MEZCENTR_SIZE_MIN и заканчиваться максимальным MEZCENTR_SIZE_MAX
Левый бегунок должен фильтровать только MEZCENTR_SIZE_MAX(от), а правый только MEZCENTR_SIZE_MIN(до).

Из ограничений - в товаре обязательно должны быть заполнены оба поля (если значение одно - то мин/макс должны быть одинаковыми)

вот ссылка на пример реализации
https://dev.1c-bitrix.ru/support/forum/forum6/topi...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы