
Версия 1.1.0: что нового
Крупное обновление mFilter с новыми сниппетами, улучшениями SEO и рефакторингом архитектуры.
Новые сниппеты
mFilterCrumbs — хлебные крошки с фильтрами
Новый сниппет расширяет pdoCrumbs, добавляя сегменты фильтров в хлебные крошки.
{'!mFilterCrumbs' | snippet : ['schemaJsonLd' => true]}На странице /catalog/color_red/size_xl/:
Главная / Каталог / Красный / XLОсобенности:
- Schema.org Microdata разметка по умолчанию
- Опциональный JSON-LD вывод
- Полная совместимость с параметрами pdoCrumbs
- Автоматические метки для parent и vendor_id
mFilterSelected — выбранные фильтры
Отображает активные фильтры с возможностью их удаления.
{'!mFilterSelected' | snippet}Особенности:
- Группировка по ключам фильтров
- Автоматические метки из лексиконов
- Кнопка сброса всех фильтров
- Интеграция с AJAX для live-обновлений
mFilterNav — SEO-навигация
Генерирует навигационные меню из значений фильтров для перелинковки.
{'!mFilterNav' | snippet : [
'filterKeys' => 'vendor_id',
'showCount' => true,
'element' => 'msProducts'
]}Применение:
- SEO перелинковка в футере
- Навигация по брендам / производителям
- Облако тегов
- Текстовые ссылки вместо чекбоксов
mFilterSitemap — карта сайта для фильтров
Генерирует XML sitemap для виртуальных страниц фильтров.
{'!mFilterSitemap' | snippet : [
'priority' => '0.7',
'changefreq' => 'weekly'
]}Особенности:
- Автоматическое определение страниц с фильтрами
- Ограничение комбинаций для контроля размера
- Кэширование результатов
- Интеграция с MODX Scheduler
SEO улучшения
Canonical URL
Исправлена логика формирования canonical URL для фильтрованных страниц. Теперь canonical корректно указывает на базовую страницу или на текущую фильтрованную страницу в зависимости от настроек.
Настройки noindex
Рефакторинг системы управления индексацией:
mfilter.seo_noindex— глобальное noindex для фильтровmfilter.seo_noindex_multiple— noindex при множественных значенияхmfilter.seo_noindex_combinations— noindex для комбинаций фильтров
Человекочитаемые метки
Фильтры parent и vendor_id автоматически получают названия ресурсов вместо ID:
/catalog/parent_15/ → "Электроника" вместо "15"
/catalog/vendor_id_3/ → "Samsung" вместо "3"Schema.org разметка
mFilterCrumbs включает полную Schema.org разметку:
- Microdata атрибуты в HTML
- Опциональный JSON-LD блок
Изменения конфигурации
Переименование системных настроек
Все настройки переименованы с mfl_* на mfilter.*:
| Было | Стало |
|---|---|
mfl_url_separator | mfilter.url_separator |
mfl_values_separator | mfilter.values_separator |
mfl_seo_enabled | mfilter.seo_enabled |
| ... | ... |
Важно: При обновлении настройки мигрируют автоматически.
URL-разделитель в JavaScript
JavaScript теперь читает mfilter.url_separator из системных настроек вместо хардкода:
// Раньше: всегда "_"
// Теперь: из настройки (например "--")Архитектурные изменения
Удаление MflPageConfig
Полностью удалена устаревшая система конфигурации страниц. Теперь используется только FilterSetManager.
Что изменилось:
- Удалена таблица
mfl_page_configs - Удалён API контроллер ConfigController
- FilterConfig теперь проксирует к FilterSetManager
Миграция: При обновлении таблица удаляется автоматически. Если у вас были настройки в MflPageConfig — пересоздайте их через Наборы фильтров.
PHPStan
Добавлена конфигурация статического анализа PHPStan уровня 5:
- Проверка типов аргументов
- Проверка возвращаемых значений
- Анализ PHPDoc
Улучшения mFilterForm
Автоопределение ресурса
mFilterForm теперь автоматически определяет текущий ресурс даже на SEO URL:
{* Раньше требовалось указывать resourceId на фильтрованных страницах *}
{'!mFilterForm' | snippet : ['resourceId' => 5]}
{* Теперь работает автоматически *}
{'!mFilterForm' | snippet}Полная поддержка MS3 опций
Фильтры теперь полностью поддерживают опции товаров MiniShop3:
- Корректное определение источника данных
- Правильная индексация значений
- Учёт структуры option_key/option_value
TV Index
Улучшена нормализация значений TV для фильтрации:
- Корректная обработка множественных значений
- Нормализация формата хранения
- Оптимизация индексации
Исправления
- MySQL 8: Исправлены проблемы с зарезервированными словами
- xPDO: Исправлена совместимость паттернов
- Date filter: Корректная обработка дат
- TV parsing: Исправлен парсинг TV значений
- Template output: Исправлена инициализация параметра tpl
- Aliases: Исправлена работа алиасов и генератора
- AJAX limit: Лимит теперь корректно передаётся в URL
Обновление
Перед обновлением
- Сделайте резервную копию базы данных
- Проверьте, что не используете устаревший MflPageConfig API
После обновления
- Очистите кэш MODX
- Пересоберите кэш роутера: Админка → mFilter → Обслуживание → Пересобрать кэш
- Проверьте системные настройки (теперь
mfilter.*)
Breaking Changes
- Системные настройки переименованы:
mfl_*→mfilter.* - Таблица
mfl_page_configsудалена - API
/api/mfilter/config/больше не существует
