
Системные настройки
Все настройки имеют префикс mfilter. и находятся в пространстве имён mfilter.
Полный актуальный список — 22 настройки. Регистрируются автоматически при установке/обновлении пакета.
Пути
| Настройка | По умолчанию | Описание |
|---|---|---|
mfilter.core_path | {core_path}components/mfilter/ | Путь к ядру компонента |
mfilter.assets_path | {assets_path}components/mfilter/ | Путь к ассетам |
mfilter.assets_url | {assets_url}components/mfilter/ | URL ассетов |
URL
| Настройка | По умолчанию | Описание |
|---|---|---|
mfilter.url_separator | -- | Разделитель ключа и значения в URL (brand--apple) |
mfilter.values_separator | -or- | Разделитель множественных значений (red-or-blue) |
mfilter.non_canonical_url_handling | 404 | Что делать с URL без trailing slash и другими не-canonical вариантами: 404, 301 (редирект на canonical), off (не вмешиваться) |
Подсказка
До версии 1.3.2 url_separator по умолчанию был _. На обновляющихся установках значение сохраняется прежним — изменение не ломает существующие URL. Новые установки получают --.
Примеры URL
С настройками по умолчанию:
/catalog/brand--apple/color--red-or-blue/price--1000-5000/С url_separator = _ (legacy) и values_separator = ,:
/catalog/brand_apple/color_red,blue/price_1000-5000/Фильтрация
| Настройка | По умолчанию | Описание |
|---|---|---|
mfilter.default_limit | 20 | Количество элементов на странице по умолчанию. Задаёт значение по умолчанию для параметра &limit сниппета mFilter; переданный &limit её перекрывает |
mfilter.default_sort | pagetitle | Поле сортировки по умолчанию |
mfilter.default_sortdir | ASC | Направление сортировки: ASC или DESC |
SEO оптимизация
| Настройка | По умолчанию | Описание |
|---|---|---|
mfilter.seo_noindex_filtered | false | Добавлять noindex для всех отфильтрованных страниц |
mfilter.seo_max_filters | 2 | Максимум активных фильтров, при котором страница индексируется. Если активных фильтров больше — noindex |
mfilter.seo_max_values | 1 | Максимум значений одного фильтра, при котором страница индексируется. 1 = страница color--red-or-blue (два значения) получает noindex |
Логика noindex
seo_noindex_filtered = true → noindex для любой фильтрации
seo_max_filters = 2 → noindex если активно больше 2 фильтров
seo_max_values = 1 → noindex для страниц с множественным выбором (color--red-or-blue)Эти три настройки работают совместно — noindex ставится при срабатывании любой.
Кэширование
| Настройка | По умолчанию | Описание |
|---|---|---|
mfilter.cache_enabled | true | Включить кэширование промежуточных результатов фильтрации |
mfilter.cache_lifetime | 3600 | Время жизни кэша в секундах |
Очистка кэша
Кэш автоматически очищается при:
- Сохранении ресурса с настроенными фильтрами
- Очистке кэша MODX
- Изменении набора фильтров в админке
Ручная очистка: mFilter → Обслуживание → Очистить кэш.
Подсказка
С версии 1.4.0 главный механизм ускорения — индекс фасетов, а не кэш. Кэш закрывает повторные запросы к одной и той же выборке.
Словоформы
| Настройка | По умолчанию | Описание |
|---|---|---|
mfilter.morpher_api_key | `` | API-ключ сервиса Morpher для автогенерации словоформ |
Morpher API
Для автоматического склонения слов используется Morpher API:
- Зарегистрируйтесь на сайте
- Получите API-ключ
- Укажите его в настройке
mfilter.morpher_api_key
Бесплатный лимит — 1000 запросов в день. Без ключа склонения генерируются по упрощённым правилам (русский язык).
Слаги
| Настройка | По умолчанию | Описание |
|---|---|---|
mfilter.slugs_auto_generate | true | Автоматически генерировать слаги для новых значений фильтров |
mfilter.slug_parent_prefix | on_conflict | Как разрешать совпадение слагов у разных значений: on_conflict, always, never (см. ниже) |
Примеры слагов
| Значение | Слаг |
|---|---|
| Красный | krasnyj |
| Apple iPhone | apple-iphone |
Транслитерация кириллицы и нормализация выполняются всегда — отдельной настройки нет. Если нужны кастомные слаги — отредактируйте их вручную в mFilter → Слаги.
Конфликты слагов
Два разных значения могут дать одинаковый слаг — например категории «Axis» в разделе «Печи» и «Axis» в разделе «Топки» обе транслитерируются в axis. Слаг обязан быть уникальным в пределах ключа фильтра, поэтому конфликт нужно как-то разрешить. За стратегию отвечает mfilter.slug_parent_prefix:
| Значение | Поведение | Когда выбирать |
|---|---|---|
on_conflict | Обычный слаг (axis); если он занят — добавляется родитель (topki-axis) | По умолчанию. Существующие URL не меняются, конфликты решаются осмысленно |
always | Родитель добавляется всегда: pechi-axis, topki-axis | Когда нужна симметрия и предсказуемость URL |
never | Родитель не используется, при конфликте — числовой суффикс (axis-2) | Когда важна краткость URL |
Смена режима меняет URL
Режим always добавляет префикс родителя ко всем слагам категорий, а не только к конфликтующим, из-за чего изменятся уже проиндексированные адреса. Настраивайте до запуска каталога, либо предусмотрите 301-редиректы со старых URL.
При обновлении с версий до 1.4.7
Фильтры «Категории товаров (MS3)» и «Производители» раньше выводили в URL числовой ID (/catalog/vendor--17/), потому что слаг для них не запрашивался. Теперь адреса строятся по слагу (/catalog/vendor--ariston/) — это происходит само, без изменения настроек. Старые ссылки продолжают работать (разбор принимает числовой сегмент), но проиндексированные адреса сменятся. Для каталога в поиске настройте 301-редиректы.
В примерах использован разделитель --; на установках, обновлённых с версий до 1.3.2, действует прежний _ — см. mfilter.url_separator.
Префикс родителя доступен только там, где значение фильтра — это ID ресурса: типы «Родители (категории)» и «Категории товаров (MS3)». Имя берётся из menutitle (или pagetitle) родительской категории.
Для остальных типов при конфликте всегда используется числовой суффикс. Это касается производителей (их ID указывает на запись MiniShop3, а не на ресурс — совпадение с номером постороннего ресурса дало бы префикс чужого раздела), опций MiniShop3 и TV.
TV-индекс
| Настройка | По умолчанию | Описание |
|---|---|---|
mfilter.tv_index_on_save | true | Автообновление TV-индекса (mfl_tv_index) при сохранении ресурса с TV |
Подсказка
Если у вас нет фильтров по TV или массовый импорт затрагивает много ресурсов, отключите эту настройку и пересобирайте индекс вручную через кнопку «Переиндексация» в шапке админки — будет быстрее.
Отладка
| Настройка | По умолчанию | Описание |
|---|---|---|
mfilter.debug_profiler | false | Включить профайлер для отладки производительности |
При включении профайлера в ответ AJAX добавляется секция profiler:
{
"success": true,
"data": { ... },
"profiler": {
"total_time": 0.045,
"queries": 12,
"memory": "2.5 MB"
}
}Фронтенд
| Настройка | По умолчанию | Описание |
|---|---|---|
mfilter.register_frontend | true | Автоматически подключать CSS/JS на фронтенде |
mfilter.auto_submit | true | Автоматическая отправка формы при изменении фильтров |
mfilter.auto_submit_delay | 300 | Задержка автоотправки (мс) |
mfilter.frontend_assets | (см. ниже) | JSON-массив CSS/JS файлов для подключения |
Список фронтенд-ассетов
mfilter.frontend_assets — JSON-массив путей с плейсхолдерами [[+cssUrl]] и [[+jsUrl]]. По умолчанию:
[
"[[+cssUrl]]web/vendor/nouislider/nouislider.min.css",
"[[+cssUrl]]web/mfilter.css",
"[[+jsUrl]]web/vendor/nouislider/nouislider.min.js",
"[[+jsUrl]]web/core/ApiClient.js",
"[[+jsUrl]]web/core/FilterAPI.js",
"[[+jsUrl]]web/modules/hooks.js",
"[[+jsUrl]]web/mfilter.headless.js",
"[[+jsUrl]]web/ui/FilterUI.js",
"[[+jsUrl]]web/ui/SelectedFilters.js",
"[[+jsUrl]]web/mfilter.slider.js",
"[[+jsUrl]]web/mfilter.js"
]При обновлении пакета список обновляется автоматически, только если в нём нет сторонних файлов. Если вы добавляли свои файлы — резолвер их обнаружит и оставит ваш список без изменений (с предупреждением в лог MODX). В этом случае обновляйте frontend_assets вручную или подключайте кастомные скрипты в шаблоне/плагине.
Отключение автоподключения
Установите mfilter.register_frontend = false и подключите файлы в шаблоне ресурса — все из списка выше, в том же порядке. Готовая разметка — в разделе JavaScript → Подключение.
Пример конфигурации
Минимальная SEO-конфигурация
mfilter.seo_max_filters = 2
mfilter.seo_max_values = 1
mfilter.non_canonical_url_handling = 404Высоконагруженный сайт
mfilter.cache_enabled = true
mfilter.cache_lifetime = 7200
mfilter.default_limit = 24Главное условие производительности — собранный индекс фасетов, не настройки кэша.
Без автоподключения JS (свой стек)
mfilter.register_frontend = false
mfilter.auto_submit = true
mfilter.auto_submit_delay = 500Что изменилось в системных настройках
С версии 1.4.0
- (нет новых настроек — индекс фасетов работает прозрачно)
С версии 1.3.2
- Добавлено:
mfilter.non_canonical_url_handling - Изменён дефолт
mfilter.url_separator:_→--(только для новых установок)
С версии 1.1.0
- Префикс настроек переименован:
mfl_*→mfilter.*
