Фильтрация по TV-полям с диапазоном значений в mSearch2 (mFilter)
При работе с каталогом товаров часто возникает необходимость фильтрации по характеристикам, которые представлены в виде диапазона значений. Например, TV-поле workTemp (Рабочая температура) может содержать данные в формате:
- 20-26
- 18-38
- 21-28
- 24-32
Типичная задача - реализовать для таких полей слайдер фильтрации, аналогичный тому, что используется для цены, с возможностью указания минимального и максимального значения.
Проблема стандартного подхода
Прямая фильтрация по TV-полю, хранящему диапазон в виде строки (например, "20-26"), средствами mSearch2 невозможна. Система воспринимает такое значение как текстовую строку, а не как числовой интервал.
Возможные решения
1. Разделение на два отдельных TV-поля
Самый очевидный вариант - создать два отдельных TV-параметра (например, workTemp_min и workTemp_max) и выводить два независимых слайдера. Однако этот метод имеет существенный недостаток: при наличии нескольких подобных характеристик интерфейс будет перегружен большим количеством элементов управления, что ухудшит пользовательский опыт.
2. Обработка диапазона в одном поле
Более элегантное решение - сохранять диапазон в одном TV-поле, но модифицировать логику индексации и фильтрации в mSearch2. Для этого потребуется:
- Создать пользовательский сниппет для индексации, который будет разбивать строку диапазона ("20-26") на два числовых значения и индексировать их как отдельные метаданные (например, workTemp_min и workTemp_max).
- Настроить mFilter2 для работы с этими виртуальными числовыми полями, используя стандартный функционал слайдера для чисел.
Этот подход позволяет сохранить удобство заполнения для администратора (одно поле) и предоставить пользователю компактный и функциональный слайдер для фильтрации.
Рекомендация
Для реализации фильтрации по диапазону в рамках одного TV-поля рекомендуется выбрать второй путь. Он требует дополнительной настройки, но обеспечивает оптимальный баланс между удобством администрирования и качеством пользовательского интерфейса. Ключевым шагом является правильная подготовка данных при индексации ресурсов.