
Системные настройки
Все настройки имеют префикс mfilter. и находятся в пространстве имён mfilter. При обновлении пакета добавляются новые настройки, а значения существующих не меняются — кроме mfilter.frontend_assets, см. Список подключаемых файлов.
Пути
| Настройка | По умолчанию | Описание |
|---|---|---|
mfilter.core_path | {core_path}components/mfilter/ | Путь к ядру компонента |
mfilter.assets_path | {assets_path}components/mfilter/ | Путь к каталогу assets компонента |
mfilter.assets_url | {assets_url}components/mfilter/ | URL каталога assets компонента |
Сейчас эти три настройки ни на что не влияют: менять их не нужно, перенести компонент в другой каталог ими нельзя.
URL
| Настройка | По умолчанию | Описание |
|---|---|---|
mfilter.url_separator | -- | Разделитель ключа и значения в URL (brand--apple) |
mfilter.values_separator | -or- | Разделитель множественных значений (red-or-blue) |
mfilter.non_canonical_url_handling | 404 | Что делать с адресом фильтра без / в конце: 404, 301 — перенаправить на адрес со /, off — открыть как есть. Другое значение работает как off. На раздел без фильтров не действует |
Подсказка
До версии 1.3.2 url_separator по умолчанию был _. При обновлении значение сохраняется, поэтому существующие URL не ломаются. -- получают только новые установки.
Меняйте разделители до запуска каталога
После смены url_separator или values_separator адреса прежнего вида перестают открываться — в том числе проиндексированные поисковиками.
Примеры URL
С настройками по умолчанию:
/catalog/brand--apple/color--red-or-blue/price--1000--5000/С прежним url_separator = _ и values_separator = ,:
/catalog/brand_apple/color_red,blue/price_1000_5000/Фильтрация
| Настройка | По умолчанию | Описание |
|---|---|---|
mfilter.default_limit | 20 | Количество элементов на странице, если сниппету mFilter не передан &limit |
mfilter.default_sort | pagetitle | Сейчас не действует — см. ниже |
mfilter.default_sortdir | ASC | Сейчас не действует — см. ниже |
Сортировку каталога задают параметры &sortby и &sortdir сниппета mFilter, а не эти две настройки.
SEO-оптимизация
| Настройка | По умолчанию | Описание |
|---|---|---|
mfilter.seo_noindex_filtered | false | Добавлять noindex для всех отфильтрованных страниц |
mfilter.seo_max_filters | 2 | Максимум активных фильтров, при котором страница индексируется |
mfilter.seo_max_values | 1 | Максимум значений одного фильтра, при котором страница индексируется. При 1 страница color--red-or-blue получает noindex |
mFilter не пишет тег в страницу сам: он ставит плейсхолдер mfilter.seo.noindex. Выведите по нему <meta name="robots"> в шаблоне ресурса — см. Плейсхолдеры. После фильтрации без перезагрузки тег ставит скрипт.
Когда ставится noindex
- Достаточно, чтобы сработала любая из трёх настроек.
0вseo_max_filtersиseo_max_values— без ограничения.- Диапазон — обе его границы — считается одним фильтром.
- Индивидуальная SEO-запись снимает
noindexотseo_max_filtersиseo_max_values, но не отseo_noindex_filtered.
Кэширование
| Настройка | По умолчанию | Описание |
|---|---|---|
mfilter.cache_enabled | true | Включить кэш значений и счётчиков в mfl_cache |
mfilter.cache_lifetime | 3600 | Время жизни кэша в секундах |
Очистка кэша
Вручную — mFilter → Обслуживание → Очистить кэш. Очистка кэша MODX таблицу mfl_cache не трогает. Когда кэш очищается сам — в разделе Автоматическая инвалидация.
Подсказка
С версии 1.4.0 главный механизм ускорения — индекс фасетов, а не кэш. Кэш закрывает повторные запросы к одной и той же выборке.
Словоформы
| Настройка | По умолчанию | Описание |
|---|---|---|
mfilter.morpher_api_key | (пусто) | API-ключ сервиса Morpher для автогенерации словоформ |
Ключ выдают на сайте Morpher API после регистрации, там же — лимиты бесплатного доступа. Без ключа запросы тоже уходят к Morpher API. Если сервис не ответил, во все падежи записывается само слово — см. Словоформы.
Слаги
| Настройка | По умолчанию | Описание |
|---|---|---|
mfilter.slugs_auto_generate | true | Автоматически генерировать слаги для новых значений фильтров. Если настройка выключена, новые значения опций и TV идут в адрес как есть. Разделы и производители получают слаги всегда |
mfilter.slug_parent_prefix | on_conflict | Как разрешать совпадение слагов у разных значений: on_conflict, always, never — см. Конфликты слагов |
При обновлении с версий до 1.4.7
Фильтры «Категории товаров (MS3)» и «Производители» раньше выводили в URL числовой ID (/catalog/vendor--17/), потому что слаг для них не запрашивался. Теперь адреса строятся по слагу (/catalog/vendor--ariston/) — это происходит само, без изменения настроек. Старые ссылки продолжают работать (разбор принимает числовой сегмент), но проиндексированные адреса сменятся. Для каталога в поиске настройте 301-редиректы.
В примерах использован разделитель --; на установках, обновлённых с версий до 1.3.2, действует прежний _ — см. mfilter.url_separator.
Примеры слагов
| Значение | Слаг |
|---|---|
| Красный | krasnyj |
| Apple iPhone | apple-iphone |
Транслитерация кириллицы и нормализация выполняются всегда — отдельной настройки нет. Свой слаг задайте вручную на вкладке Алиасы.
Конфликты слагов
Слаг должен быть уникальным в пределах ключа фильтра. Если два значения дают одинаковый слаг — например, категории «Classic» в разделах «Кресла» и «Диваны» обе дают classic, — их разводит mfilter.slug_parent_prefix:
| Значение | Поведение | Когда выбирать |
|---|---|---|
on_conflict | Обычный слаг (classic); если он занят — добавляется родитель (divany-classic) | По умолчанию. Существующие URL не меняются, конфликты решаются осмысленно |
always | Родитель добавляется всегда: kresla-classic, divany-classic | Когда нужна симметрия и предсказуемость URL |
never | Родитель не используется, при конфликте — числовой суффикс (classic-2) | Когда важна краткость URL |
Если в on_conflict занят и вариант с родителем, добавляется числовой суффикс. Неизвестное значение настройки работает как on_conflict.
Префикс родителя доступен только там, где значение фильтра — ID ресурса: у типов «Родители (категории)» и «Категории товаров (MS3)». Имя берётся из menutitle (или pagetitle) родительской категории.
Остальным типам — производителям, опциям MiniShop3 и TV — при конфликте всегда добавляется числовой суффикс. ID производителя указывает на запись MiniShop3, а не на ресурс: совпадение с номером постороннего ресурса дало бы префикс чужого раздела.
Смена режима меняет URL
Режим действует на слаги, созданные после переключения: существующие не меняются. Чтобы перевести и старые категории, удалите их слаги на вкладке Алиасы — адреса этих категорий сменятся, предусмотрите 301-редиректы. Настраивайте режим до запуска каталога.
TV-индекс
| Настройка | По умолчанию | Описание |
|---|---|---|
mfilter.tv_index_on_save | true | Автообновление TV-индекса (mfl_tv_index) при сохранении ресурса с TV |
Подсказка
При массовых правках ресурсов, у которых есть TV из фильтров, отключите настройку, а после правок нажмите «Переиндексация» в шапке админки. Без фильтров по TV отключать незачем — индексировать нечего.
Отладка
| Настройка | По умолчанию | Описание |
|---|---|---|
mfilter.debug_profiler | false | Замеры времени: панель под формой фильтров, замеры первой загрузки и после AJAX |
Не оставляйте на рабочем сайте
Панель замеров под формой mFilterForm видят все посетители, а не только менеджеры.
Замеры первой загрузки сниппет mFilter выводит в код страницы, в window.__mfilterProfiler; скрипт формы показывает их в панели и удаляет переменную — ищите их в исходном коде страницы, а не в консоли. После фильтрации без перезагрузки замеры приходят в ключе _profiler ответа. Для этого на странице должна быть форма mFilterForm: при включённой настройке она добавляет к запросам debug=1.
{
"success": true,
"_profiler": {
"total_ms": 45.2,
"operations": {
"getFilters": { "total_ms": 12.1, "count": 1, "avg_ms": 12.1, "min_ms": 12.1, "max_ms": 12.1 }
}
}
}Фронтенд
| Настройка | По умолчанию | Описание |
|---|---|---|
mfilter.register_frontend | true | Автоматически подключать CSS/JS на фронтенде |
mfilter.auto_submit | true | Автоматическая отправка формы при изменении фильтров. Действует на форму mFilterForm; параметр &autoSubmit в вызове главнее |
mfilter.auto_submit_delay | 300 | Пауза после последнего изменения перед запросом, мс. Параметр &autoSubmitDelay главнее |
mfilter.frontend_assets | (см. ниже) | JSON-массив подключаемых CSS- и JS-файлов |
Список подключаемых файлов
mfilter.frontend_assets — JSON-массив путей с плейсхолдерами [[+cssUrl]], [[+jsUrl]] и [[+assetsUrl]]. По умолчанию:
[
"[[+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"
]Свои скрипты подключайте в шаблоне ресурса или плагине, а не в этом списке: при обновлении пакета он заменяется стандартным. Свой файл, записанный через [[+jsUrl]] или положенный в каталог mFilter, пропадёт, а убранные из списка файлы mFilter вернутся.
Список остаётся как есть, только если в нём есть сторонний файл — вне каталога mFilter и без плейсхолдеров [[+…]]. Тогда окно установки покажет предупреждение. Пустой список тоже не трогается.
Отключение автоподключения
Установите 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.9.1
mfilter.default_limitначала действовать: свойствоlimitсниппетаmFilterтеперь по умолчанию пустое. Если в свойство было вписано своё число, после обновления оно пропало — задайте его в настройке или в&limit
С версии 1.5.0
- Добавлено:
mfilter.slug_parent_prefix - Диапазон считается одним фильтром для
mfilter.seo_max_filters
С версии 1.4.3
- Пустой список
mfilter.frontend_assetsпри обновлении больше не заполняется
С версии 1.3.2
- Добавлено:
mfilter.non_canonical_url_handling - Изменено значение по умолчанию
mfilter.url_separator:_→--(только для новых установок)
С версии 1.1.0
- Префикс настроек переименован:
mfl_*→mfilter.*
