Skip to content
  1. Компоненты
  2. simpleFilters

simpleFilters

Пакет устанавливается стандартным образом из репозитория через установщик MODX3.

Системные настройки

ПараметрОписаниеЗначение по умолчанию
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Родители для выборки. ID через запятую.Текущий ресурс
&resourcesРесурсы для выборки. ID через запятую.
&showUnpublishedВывод неопубликованных ресурсов0
&templatesШаблоны ресурсов через запятую
&whereПервоначальная выборка в JSON-формате
&sortbyПоле для сортировкиmenuindex
&sortdirНаправление сортировкиASC
&limitКоличество на страницу10
&includeTVsTV-поля через запятую для включения в вывод
&tvPrefixПрефикс для TV-полей в чанке ресурсаtv_
&msPrefixПрефикс для полей товара miniShop3ms_
&msoPrefixПрефикс для опций товара miniShop3mso_
&hideOneСкрывать фильтры с одним значением1
&checkEmptyПросчитывать результат для каждого значения фильтра (усложняет выборку)0
&filtersСписок фильтров в формате поле1:тип_поля1,поле2:тип_поля2,поле3:тип_поля3
&fseparatorРазделитель значений фильтра в адресной строке_
&modeРежим работы: and — совпадение всех условий, or — совпадение хотя бы одного условияor
Шаблонизация
&tplЧанк вывода ресурса
&tplWrapperЧанк-обёртка всего выводаsf_wrapper
&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
&tplSelectedЧанк оформления блока выбранного фильтраsf_selected_filter
&tplSelectedRowЧанк оформления строки выбранного фильтраsf_selected_row
Пагинация
&tplPaginationWrapperЧанк-обёртка блока пагинацииsf_pagination
&tplPaginationЧанк вывода ссылки на страницуsf_page
&tplPaginationFirstЧанк вывода ссылки на первую страницуsf_page_first
&tplPaginationLastЧанк вывода ссылки на последнюю страницуsf_page_last
&tplMoreButtonЧанк вывода кнопки «Загрузить ещё»sf_morebutton

Настройка фильтров

В параметре &filters используйте следующие префиксы:

  • Поле ресурса — без префикса
  • TV-параметр — tv_
  • MIGX-поле — migx_
  • Поле товара MiniShop3 — ms_
  • Опция товара MiniShop3 — mso_

Для типов:

  • Чекбокс — checkbox или оставить пустым
  • Выпадающий список — select
  • Слайдер — slider
  • Радиокнопка — radio

Пример указания списка фильтров:

&filters=`
    parent:select,
    ms_vendor_id:select,
    ms_price:slider,
    tv_instock:slider,
    migx_chars_Высота:slider:title|value,
    ms_color,
    ms_tags:select
`

MIGX-поля указываются в формате:

migx_[имя tv]_[название параметра]:[тип фильтра]:[поле названия]|[поле значения]

Допустим есть MIGX-TV chars с такой конфигурацией:

json
[{"fields":
  [
    {"field":"title", "caption":"Параметр"},
    {"field":"value", "caption":"Значение"}
  ]
}]

А у товаров значения указываются следующим образом:

MIGX значения

Чтобы создать фильтр-слайдер для параметра «Высота» нужно прописать:

migx_chars_Высота:slider:title|value

Фильтр для параметра «Назначение» в виде чекбоксов так:

migx_chars_Назначение:title|value

Параметр &where

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

ОписаниеПример
Вывод новинок'where' => '{"new":"1"}'
Вывод товаров с ценой больше 2000'where' => '{"price:>":"2000"}'
Вывод ресурсов со словом "скидка" в longtitle'where' => '{"longtitle:like":"скидка"}'

Шаблонизация

В чанках по умолчанию используется Fenom (требуется наличие pdoTools), но поддерживается и стандартный синтаксис.

Компонент поддерживает кастомные чанки для разных фильтров.

Для этого нужно указать параметры в виде &tplFilter_параметр и &tplFilterRow_параметр.

Например, если требуется для фильтра по тегам (ms_tags) какое-то своё оформление, создайте соответствующие чанки и укажите в вызове:

&tplFilter_ms_tags=`чанк_для_блока`
&tplFilterRow_ms_tags=`чанк_для_элемента`

Названия блоков фильтров задаются через лексиконы в формате sf_filter_фильтр (также можно менять в плагине).

JavaScript

Для отправки формы можно использовать метод sf.submit:

js
sf.submit();

После обновления данных срабатывает событие sfilters:

js
document.addEventListener('sfilters', (e) => {
    // console.log(e);
};

Системные события

Все события принимают массив $data.

СобытиеОписание
sfOnGetIdsВызывается после первоначального сбора ID выводимых ресурсов. Можно добавить ресурс, прописав его ID или полностью переписать набор.
sfOnGetFilterValuesВызывается после создания значений фильтра. Принимает массив со значениями (например, можно отсортировать по-своему), названием и типом фильтра.
sfOnBeforeCreateFilterRowВызывается при создании строки (элемента фильтра). Можно заменить названия, значения и т. д.
sfOnBeforeCreateFilterВызывается при создании блока фильтра. Например, можно изменить название блока, значения для слайдера и т. д.
sfOnCheckResourceВызывается при проверке ресурса на соответствие значению выбранного фильтра. Приходит id ресурса, название фильтра и значение. Чтобы ресурс добавился в выборку, должно возвращать $data['result'] = true;

В комплекте идёт плагин simpleFilters с примерами.