simpleFilters - простая фильтрация для MODX3
Всем привет!
Пока мы ждём нового mFilter для MODX3 (который обещает быть ого-го), предлагаю вниманию уважаемого сообщества более простое решение здесь и сейчас ).
Пакет устанавливается стандартным образом из репозитория.
&where поддерживает один параметр/значение.
Работает только к таблицами ресурса MODX и продукта MiniShop3 (поля указываются без префиксов, как в базе).
Вывод новинок:
Вывод товаров с ценой больше 2000:
Вывод ресурсов со словом «скидка» в longtitle:
В чанках по умолчанию используется Fenom (требуется наличие pdoTools), но поддерживается и стандартный синтаксис
Для этого нужно указать параметры в виде &tplFilter_параметр и &tplFilterRow_параметр.
Например, если требуется для фильтра по тегам (ms_tags) какое-то своё оформление, создайте соответствующие чанки и укажите в вызове:
Названия блоков фильтров задаются через лексиконы в формате sf_filter_фильтр (также можно менять в плагине на событие sfOnBeforeCreateFilter).
Пока мы ждём нового mFilter для MODX3 (который обещает быть ого-го), предлагаю вниманию уважаемого сообщества более простое решение здесь и сейчас ).
Основные свойства
- Поддержка полей ресурсов, а также полей и опций товаров MiniShop3.
- Четыре типа фильтров: чекбокс, радиокнопка, выпадающий список, слайдер для числовых значений (на основе noUiSlider).
- Пагинация.
- Настраиваемая сортировка и выбор количества на страницу.
- Системные события для тонкой настройки (тексты фильтров, заголовки блоков, значения, сортировка полей и т. д.).
- Для работы не требуется jQuery.
Системные настройки
- sf_css_path — путь к JS-файлу, по умолчанию {assets_url}components/simplefilters/js/web/default.min.js
- sf_css_path — путь к CSS-файлу, по умолчанию {assets_url}components/simplefilters/css/web/default.min.css
Сниппет simpleFilters
Выводит список ресурсов, фильтры, подключает все необходимые скрипты и стили.Параметры (в скобках — значение по умолчанию):
- parents — родители для выборки (текущий ресурс)
- sortby — поле для сортировки (menuindex)
- sortdir — направление сортировки (ASC)
- limit — кол-во на страницу (10)
- includeTVs — TV-поля через запятую для включения в вывод
- tvPrefix — префикс для TV-полей (tv_)
- msPrefix — префикс для полей товара miniShop3 (ms_)
- msoPrefix — префикс для опций товара miniShop3 (mso_)
- templates — шаблоны ресурсов через запятую
- where — первоначальная выборка в JSON-формате
- filters — список фильтров в формате поле1: тип_поля1, поле2: тип_поля2, поле3: тип_поля3
- fseparator — разделитель значений фильтра в адресной строке (_)
- mode — режим работы: and — совпадение всех условий, or — совпадение хотя бы одного уcловия (and)
- Поле ресурса — без префикса
- TV-параметр — tv_
- Поле товара MiniShop3 — ms_
- Опция товара MiniShop3 — mso_
- Чекбокс — checkbox или оставить пустым
- Выпадающий список — select
- Слайдер — slider
- Радиокнопка — radio
...
&filters=`ms_vendor_id:select,ms_price:slider,tv_instock:slider,ms_color,ms_tags:select`
...&where поддерживает один параметр/значение.
Работает только к таблицами ресурса MODX и продукта MiniShop3 (поля указываются без префиксов, как в базе).
Вывод новинок:
&where=`{ "new":"1" }`Вывод товаров с ценой больше 2000:
&where=`{ "price:>":"2000" }`Вывод ресурсов со словом «скидка» в longtitle:
&where=`{ "longtitle:like":"скидка" }`Шаблоны
В чанках по умолчанию используется Fenom (требуется наличие pdoTools), но поддерживается и стандартный синтаксис
- tpl — чанк вывода ресурса
- tplWrapper — чанк-обертка всего вывода (sf_wrapper)
- tplPaginationWrapper — чанк-обертка пагинации (sf_pagination)
- tplPagination — чанк вывода ссылки на страницу (sf_page)
- tplPaginationFirst — чанк вывода ссылки на первую страницу (sf_page_first)
- tplPaginationLast — чанк вывода ссылки на последнюю страницу (sf_page_last)
- tplFilter — чанк блока фильтра (sf_filter)
- tplFilterRow — чанк строки фильтра типа чекбокс (sf_filter_row)
- tplFilterRadioRow — чанк строки фильтра типа радиокнопка (sf_filter_radio_row)
- tplFilterSelect — чанк блока фильтра типа селект (sf_filter_select)
- tplFilterSelectRow — чанк опции фильтра типа селект (sf_filter_option_row)
- tplFilterSlider — чанк блока фильтра типа слайдер (sf_filter_slider)
Для этого нужно указать параметры в виде &tplFilter_параметр и &tplFilterRow_параметр.
Например, если требуется для фильтра по тегам (ms_tags) какое-то своё оформление, создайте соответствующие чанки и укажите в вызове:
&tplFilter_ms_tags=`чанк_для_блока`
&tplFilterRow_ms_tags=`чанк_для_элемента`Названия блоков фильтров задаются через лексиконы в формате sf_filter_фильтр (также можно менять в плагине на событие sfOnBeforeCreateFilter).
Системные события
Все события принимают массив $data.- sfOnGetIds — вызывается после первоначального сбора ID выводимых ресурсов. Можно добавить ресурс, прописав его ID или полностью переписать набор.
- sfOnGetFilterValues — вызывается после создания значений фильтра. Принимает массив со значениями (например, можно отсортировать по-своему), названием и типом фильтра.
- sfOnBeforeCreateFilterRow — вызывается при создании строки (элемента фильтра). Можно заменить названия, значения и т. д.
- sfOnBeforeCreateFilter — вызывается при создании блока фильтра. Например, можно изменить название блока, значения для слайдера и т. д.
- sfOnCheckResource — вызывается при проверке ресурса на соответствие значению выбранного фильтра. Приходит id ресурса, название фильтра и значение. Чтобы ресурс добавился в выборку должно возвращать $data['result'] = true;
Комментарии: 4
Кроме обычной пагинации предусмотрена ли загрузка «по кнопке»?
В данный момент нет, но в ближайшее время планирую добавить.
Также в планах работа с MIGX-параметрами, но это позже.
Также в планах работа с MIGX-параметрами, но это позже.
Как будто бы 2 секунды на фильтрацию 1000 товаров без единой твшки это многовато.
Новинки, Акции, Хиты, Цена и Цвет — поля товара miniShop3.
На складе — TV-шка.
Материал — опция категории (ms3_product_option).
Компонент потому и «simple», что не претендует на суперскорость.
Для >1000 товаров в категории или большого кол-ва фильтров нужно использовать другие решения.
На складе — TV-шка.
Материал — опция категории (ms3_product_option).
Компонент потому и «simple», что не претендует на суперскорость.
Для >1000 товаров в категории или большого кол-ва фильтров нужно использовать другие решения.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.