четверг, 7 февраля 2013 г.

динамический фильтр javascript

Для вывода товаров используется сниппет «tmGetProducts». Никаких параметров у этого сниппета нет. Это «обёртка», которая использует сниппеты «getPage» и «getResources». Параметры он применяет по имени набора параметров, созданного для сниппета «getPage». Это имя нужно указать в конфигурации компонента («Настройки системы» -> «tag_manager» -> «tag_mgr.propertySetName»). Также этот набор параметров применяет php-скрипт, который возвращает данные при ajax-запросах (происходит синхронизация настроек).

Вызов данного сниппета рекоммендуется кэшировать (скобки без "!"). Создаётся JS-объект со всеми параметрами товаров и по этом данным осуществляется поиск (на JavaScript). На сервер отправляется только список ID товаров.

Примеры чанков innerTpl и outerTpl прилагаются (core/components/tag_manager/elements/chunks/).

jsMap Создавать JS-объект данных товаров. Используется для фильтрации и быстрого показа количества товаров по каждому фильтру.

skipTV ID TV через запятую, фильтры по которым выводить не нужно.

outerTpl Чанк шаблона блока фильтров. По умолчанию `@ FILE core/components/tag_manager/elements/chunks/outerTpl.tpl`.

innerTpl Чанк шаблона строки с фильтром. По умолчанию `@ FILE core/components/tag_manager/elements/chunks/innerTpl.tpl`.

Для вывода блоков фильтров на сайте используется сниппет «tmCatalogFilters».

Была задача чтобы при фильтрации невозможно было получить результат «ничего не найдено». При этом у каждого фильтра должна выводиться циферка, показывающая количество товаров по этому фильтру. Т.е. вместо одного запроса получалось около 20 (конкретно в моём случае). Конечно, данные товаров можно было индексировать и кэшировать, но и это по расчётам не дало бы требуемого результата. Всё должно работать максимально быстро. Поэтому было решено часть работы по фильтрации (точнее основную часть) переложить на «клиента» (JavaScript).

Как работает компонент управления фильтрами описывать долго и нудно, поэтому я решил сделать видео:

Поддержка типов ввода TV с выбором одновременно нескольких значений Флажки(checkbox), Список (множественный выбор).

Выводится число товаров по каждому фильтру. Блокируется получение пустого результата поиска.

Ajax-фильтрация и сортировка товаров в каталоге.

Изменение значений (по двойному клику появляется поле) для всех товаров, у которых есть это значение.

Настройка активности групп фильтров и отдельных значений (чекбокс).

Сортировка групп фильтров и отдельно их значений.

Наконец-то дошли руки довести до ума компонент «Фильтрация и управление фильтрами» (tagManager). Первая его версия была очень сырая, даже пришлось сделать дополнительно упрощённый вариант фильтрации. Теперь всё, что было задумано реализовано в нормальном виде и хочу рассказать об этом компоненте сообществу MODX и всем интересующимся.

Компонент «Фильтрация и управление фильтрами» 1.2 для MODX Revolution

29 августа 2012 в 10:48

Компонент «Фильтрация и управление фильтрами» 1.2 для MODX Revolution / Хабрахабр

Комментариев нет:

Отправить комментарий