2980
38.70
42.57
за сайт
- Проверено Modstore
- Бесплатные будущие обновления
- Работа на тестовом и публичном домене
- 12 месяцев тех. поддержки
Внимание, этот компонент требует PHP
8.0
или выше!
Внимание, этот компонент требует MODX 3 или выше.
Основные свойства
- Поддержка полей ресурсов, TV и MIGX полей, а также полей и опций товаров MiniShop3.
- Четыре типа фильтров: чекбокс, радиокнопка, выпадающий список, слайдер для числовых значений (на основе noUiSlider).
- Настройка псевдонимов фильтров в URL.
- Поддерживает как прямые запросы, так и индексацию полей и значений в отдельной таблице и выборке из нее.
- Пагинация (постраничная и кнопкой «Загрузить ещё»).
- Настраиваемая сортировка и выбор количества на страницу.
- Работает в логике AND и OR (настраивается).
- Системные события для тонкой настройки (тексты фильтров, значения, сортировка полей и т. д.).
- Для работы не требуется jQuery.
Установка
Пакет устанавливается стандартным образом через установщик MODX3.Системные настройки
- sf_index_templates — шаблоны ресурсов, поля которых нужно индексировать (ID через зяпятую)
- sf_index_fields — поля ресурсов, которые нужно индексировать
- 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
Начало работы
По умолчанию компонент работает с индексной таблицей modx_sf_index, в которой содержатся значения полей и их значений для ресурсов.Для добавления данных нужно прописать шаблоны ресурсов, участвующих в фильтрации в системной настройке sf_index_templates и указать поля для индексации в системной настройке sf_index_fields.
Используйте следующие префиксы:
- Поле ресурса — без префикса
- TV-параметр — tv_
- MIGX-поле — migx_
- Поле товара MiniShop3 — ms_
- Опция товара MiniShop3 — mso_
То есть если требуется фильтровать товары MiniShop по родителю, цене, производителю, новинкам, хитам и материалам (опция товара), то в sf_index_fields пропишите:
parent,ms_price,ms_vendor_id,ms_new,ms_popular,mso_materialДля MIGX-полей формат следующий: migx_[имя tv]_[название параметра]:[поле названия]|[поле значения] (подробнее смотрите ниже).
Далее можно либо запустить через консоль следующий скрипт:…
<?php
$sf = $modx->getService('Simplefilters');
$sf->updateIndexAll();… либо вызвать на любой странице сайта сниппет simpleFiltersUpdate, который идет в комплекте.
Этот же сниппет можно использовать для индексации по расписанию посредством CronManager или Scheduler. Просто добавьте сниппет в задание и настройте периодичность запуска.
При сохранении ресурса в админке индексация производится через плагин simpleFilters.
Сниппет simpleFilters
Выводит список ресурсов, фильтры, подключает все необходимые скрипты и стили.Параметры (в скобках — значение по умолчанию):
- parents — родители для выборки (текущий ресурс)
- resources — ресурсы для выборки.
- templates — шаблоны ресурсов через запятую
- fromIndex — Режим работы с индексной таблицей (1)
- showUnpublished — вывод неопубликованных ресурсов (0)
- where — первоначальная выборка в JSON-формате
- sortby — поле для сортировки (menuindex)
- sortdir — направление сортировки (ASC)
- limit — кол-во на страницу (10)
- includeTVs — TV-поля через запятую для включения в вывод
- tvPrefix — префикс для TV-полей (tv_)
- msPrefix — префикс для полей товара miniShop3 (ms_)
- msoPrefix — префикс для опций товара miniShop3 (mso_)
- hideOne — скрывать фильтры с одним значением (1)
- checkEmpty — просчитывать результат для каждого значения фильтра, чтобы отключать неактивные (0)
- filters — список фильтров в формате поле1: тип_поля1, поле2: тип_поля2, поле3: тип_поля3
- aliases — Псевдонимы фильтров для URL в формате поле1==псевдоним1, поле2==псевдоним2, поле3==псевдоним3
- fseparator — разделитель значений фильтра в адресной строке (_)
- mode — режим работы: and — совпадение всех условий, or — совпадение хотя бы одного уcловия (or)
- Поле ресурса — без префикса
- 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
`
&aliases=`
parent==category,
ms_vendor_id==brand,
ms_price==price,
tv_instock==instock,
migx_chars_Высота==height,
ms_color==color,
ms_tags==tags
`...MIGX-поля указываются в формате:
migx_[имя tv]_[название параметра]:[тип фильтра]:[поле названия]|[поле значения]Допустим есть MIGX-TV chars с такой конфигурацией:
[{ "fields":[
{ "field":"title", "caption":"Параметр" },
{ "field":"value", "caption":"Значение" }
]
}]У товаров значения указываются следующим образом:

Чтобы создать фильтр-слайдер для параметра «Высота» нужно прописать:
migx_chars_Высота:slider:title|valueЧекбоксы для параметра «Назначение» так:
migx_chars_Назначение:title|value&where поддерживает один параметр/значение.
Работает только к таблицами ресурса и продукта 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)
- tplMoreButton — чанк вывода кнопки «Загрузить ещё» (sf_morebutton)
- tplFilter — чанк блока фильтра (sf_filter)
- tplFilterRow — чанк строки фильтра типа чекбокс (sf_filter_row)
- tplFilterRadioRow — чанк строки фильтра типа радиокнопка (sf_filter_radio_row)
- tplFilterSelect — чанк блока фильтра типа селект (sf_filter_select)
- tplFilterSelectRow — чанк опции фильтра типа селект (sf_filter_option_row)
- tplFilterSlider — чанк блока выбранного фильтра (sf_selected_filter)
- tplSelectedRow — чанк строки выбранного фильтра (sf_selected_row)
Компонент поддерживает кастомные чанки для разных фильтров.
Для этого нужно указать параметры в виде &tplFilter_параметр и &tplFilterRow_параметр.
Например, если требуется для фильтра по тегам (ms_tags) какое-то своё оформление, создайте соответствующие чанки и укажите в вызове:
&tplFilter_ms_tags=`чанк_для_блока`
&tplFilterRow_ms_tags=`чанк_для_элемента`Названия блоков фильтров задаются через лексиконы в формате sf_filter_фильтр (также можно менять в плагине, см. далее).
JavaScript
Для отправки данных формы можно использовать метод:sf.submit();После обновления данных срабатывает событие sfilters:
document.addEventListener('sfilters', (e) => {
//console.log(e);
};Системные события
Все события принимают массив $data.- sfOnGetIds — вызывается после первоначального сбора ID выводимых ресурсов. Можно добавить ресурс, прописав его ID или полностью переписать набор.
- sfOnGetFilterValues — вызывается после создания значений фильтра. Принимает массив со значениями (например, можно отсортировать по-своему), названием и типом фильтра.
- sfOnBeforeCreateFilterRow — вызывается при создании строки (элемента фильтра). Можно заменить названия, значения и т. д.
- sfOnBeforeCreateFilter — вызывается при создании блока фильтра. Например, можно изменить название блока, значения для слайдера и т. д.
- sfOnCheckResource — вызывается при проверке ресурса на соответствие значению выбранного фильтра. Приходит id ресурса, название фильтра и значение. Чтобы ресурс добавился в выборку должно возвращать $data['result'] = true;
Примеры обработки событий можно посмотреть в файле core/components/simplefilters/docs/pluginExamples.md.
simpleFilters
1.2.0
Основные изменения:
- Добавилась возможность индексации полей ресурсов и ускоренной выборки.
- Добавилась возможность настроки алиасов для полей в адресной строке.
Подробнее:
- Добавилась таблица индекса modx_sf_index
- Добавились системные настройки sf_index_templates и sf_index_fields для указания шаблонов ресурсов и полей индексации
- В плагин simpleFilters добавлено событие onDocFormSave для индексирования ресурса при сохранении
- Добавился сниппет simpleFiltersUpdate для обновления индекса по расписанию (запуск через cronManager или Scheduler)
- В сниппете добавился параметр &fromIndex для включения режима выборки из индекса. По умолчанию включен.
- В сниппете добавился параметр &aliases для назначения псевдонимов параметрам в URI
- Улучшена JS-обработка слайдеров (из запроса исключаются неактивные параметры)
1.1.0
В сниппете добавлены параметры:
- resources - вывод указанных ресурсов
- showUnpublished - вывод неопубликованных ресурсов (0)
- hideOne - скрывать фильтр с одним значением (1)
- checkEmpty - просчитывать результат для каждого значения фильтра (0)
- tplSelected - чанк оформления блока с выбранными фильтрами
- tplSelectedRow - чанк оформления строки выбранного фильтра
Добавлены плейсхолдеры
- disabled - в сроке фильтра для вывода disabled в случае отсутствия результата по значению фильтра (checkEmpty должен быть включен)
- selected_filters - вывод выбранных фильтров в &tplWrapper
JS
- Добавлено JS-событие, срабатывающее после обновления данных document.addEventListener('sfilters', (e) => { };
Дополнительно
- Улучшена выборка в режиме AND
- Добавлена обработка TV типа "автометка" (резделитель запятая)
1.0.4
- Добавлена возможность фильтрации по MIGX-полям
- Исправлена ошибка в выводе полей типа select
- Добавлен чанк кнопки «Загрузить ещё»
1.0.3
- Добавлена возможность пагинации по кнопке «Загрузить ещё»
- По умолчанию включен режим OR
- Оптимизация логики
1.0.2
- Исправлен баг с установкой пустых чанков
1.0.1
- Добавлена защита пакета
1.0.0
- Первая редакция




Последние обсуждения в сообществе MODX.pro