
Разработка
Разделы
| Раздел | Описание |
|---|---|
| JavaScript | Подключение скриптов, настройки формы, слайдер диапазона |
| JS API | Управление фильтром из своего кода |
| Headless API | Запросы к серверу без формы, из своего приложения |
| Сервисы | PHP-сервисы фасада MFilter |
| Типы фильтров | Встроенные типы и свой тип фильтра |
| События | События MODX, на которые подписан плагин, и OnMFilterInit |
| Модели и БД | Таблицы базы данных |
Архитектура
Точки расширения
| Где | Что | Подробнее |
|---|---|---|
| JavaScript | Хуки — перехват запросов фильтрации | Headless API → Хуки |
| JavaScript | События формы в браузере | JS API → События |
| PHP | Свои типы фильтров, в том числе по своим таблицам | Типы фильтров |
| PHP | Событие OnMFilterInit — регистрация своих типов | События |
| Чанки | Своя разметка формы и результатов | Чанки и разметка |
Быстрые примеры
Программное управление фильтром
javascript
mfilterGet().setFilter('color', ['red', 'blue']); // запрос уйдёт самХук на применение фильтров
javascript
mfilterHooks.add('beforeApply', (ctx) => {
console.log('Фильтры:', ctx.params.filters);
// Можно модифицировать ctx.params
});Регистрация своего типа фильтра
php
// В плагине на OnMFilterInit
$mfilter->getFilterTypesRegistry()->register('mytype', new MyFilterType($modx, $mfilter));