Фильтрация по 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-поля рекомендуется выбрать второй путь. Он требует дополнительной настройки, но обеспечивает оптимальный баланс между удобством администрирования и качеством пользовательского интерфейса. Ключевым шагом является правильная подготовка данных при индексации ресурсов.