Skip to content
mFilter
mFilter
Фасетная фильтрация для MODX 3 с поддержкой SEO URL
  1. Компоненты
  2. mFilter

Версия 1.1.0: что нового

Крупное обновление mFilter с новыми сниппетами, улучшениями SEO и рефакторингом архитектуры.

Новые сниппеты

mFilterCrumbs — хлебные крошки с фильтрами

Новый сниппет расширяет pdoCrumbs, добавляя сегменты фильтров в хлебные крошки.

fenom
{'!mFilterCrumbs' | snippet : ['schemaJsonLd' => true]}

На странице /catalog/color_red/size_xl/:

Главная / Каталог / Красный / XL

Особенности:

  • Schema.org Microdata разметка по умолчанию
  • Опциональный JSON-LD вывод
  • Полная совместимость с параметрами pdoCrumbs
  • Автоматические метки для parent и vendor_id

Подробнее →


mFilterSelected — выбранные фильтры

Отображает активные фильтры с возможностью их удаления.

fenom
{'!mFilterSelected' | snippet}

Особенности:

  • Группировка по ключам фильтров
  • Автоматические метки из лексиконов
  • Кнопка сброса всех фильтров
  • Интеграция с AJAX для live-обновлений

Подробнее →


mFilterNav — SEO-навигация

Генерирует навигационные меню из значений фильтров для перелинковки.

fenom
{'!mFilterNav' | snippet : [
    'filterKeys' => 'vendor_id',
    'showCount' => true,
    'element' => 'msProducts'
]}

Применение:

  • SEO перелинковка в футере
  • Навигация по брендам / производителям
  • Облако тегов
  • Текстовые ссылки вместо чекбоксов

Подробнее →


mFilterSitemap — карта сайта для фильтров

Генерирует XML sitemap для виртуальных страниц фильтров.

fenom
{'!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_separatormfilter.url_separator
mfl_values_separatormfilter.values_separator
mfl_seo_enabledmfilter.seo_enabled
......

Важно: При обновлении настройки мигрируют автоматически.

URL-разделитель в JavaScript

JavaScript теперь читает mfilter.url_separator из системных настроек вместо хардкода:

javascript
// Раньше: всегда "_"
// Теперь: из настройки (например "--")

Архитектурные изменения

Удаление MflPageConfig

Полностью удалена устаревшая система конфигурации страниц. Теперь используется только FilterSetManager.

Что изменилось:

  • Удалена таблица mfl_page_configs
  • Удалён API контроллер ConfigController
  • FilterConfig теперь проксирует к FilterSetManager

Миграция: При обновлении таблица удаляется автоматически. Если у вас были настройки в MflPageConfig — пересоздайте их через Наборы фильтров.

PHPStan

Добавлена конфигурация статического анализа PHPStan уровня 5:

  • Проверка типов аргументов
  • Проверка возвращаемых значений
  • Анализ PHPDoc

Улучшения mFilterForm

Автоопределение ресурса

mFilterForm теперь автоматически определяет текущий ресурс даже на SEO URL:

fenom
{* Раньше требовалось указывать 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

Обновление

Перед обновлением

  1. Сделайте резервную копию базы данных
  2. Проверьте, что не используете устаревший MflPageConfig API

После обновления

  1. Очистите кэш MODX
  2. Пересоберите кэш роутера: Админка → mFilter → Обслуживание → Пересобрать кэш
  3. Проверьте системные настройки (теперь mfilter.*)

Breaking Changes

  • Системные настройки переименованы: mfl_*mfilter.*
  • Таблица mfl_page_configs удалена
  • API /api/mfilter/config/ больше не существует