mFilter

Фильтр для MODX3 с поддержкой SEO-friendly URL
Автор дополнения
Николай Савин
Пакетов
20
Закачек
32 973
Обычно отвечает в течение суток
Автор дополнения
Пакетов
20
Закачек
32 973
Обычно отвечает в течение суток
Версия 1.4.7-beta1
Дата выпуска 03.08.2026
Загрузки 138
Просмотры 1 470
Внимание, этот компонент требует PHP 8.1 или выше!
Внимание, этот компонент требует MODX 3 или выше.



Возможности



  • Фасетная фильтрация — фильтрация по любым полям ресурсов, TV, опциям MiniShop3
  • SEO URL — человекочитаемые URL вида /catalog/brand_apple/color_black/
  • Кросс-фильтрация — подсчёт доступных значений с учётом активных фильтров
  • AJAX — обновление результатов без перезагрузки страницы
  • Headless API — REST API для интеграции с Vue, React, Svelte
  • SEO оптимизация — динамические title, description, H1, canonical
  • Словоформы — склонение названий фильтров в SEO-текстах
  • Интеграция — работает с MiniShop3, mSearch, pdoTools
  • Vue-интерфейс — современная админ-панель на Vue 3 + PrimeVue

Системные требования



  • MODX Revolution | 3.0.0+
  • PHP | 8.1+
  • MySQL | 5.7+ / MariaDB 10.3+

Зависимости


  • pdoTools 3.x — для работы сниппетов и шаблонизатора Fenom
  • VueTools — для административного интерфейса
  • MiniShop3 (опционально) — для фильтрации товаров

Быстрый старт


Добро пожаловать в документацию — docs.modx.pro/components/mfilter/quick-start

1.4.7-beta1

Исправления

  • Сортировка каталога работала только внутри страницы, а не глобально. При sort=price-asc первый товар страницы 2 мог оказаться дешевле последнего товара страницы 1 — сортировка применялась к нарезанному срезу, а не ко всему каталогу. Причина: в element mode (при element='msProducts') mFilter передавал в ElementRunner::getIds() дефолтный sortby из свойств снипета (обычно pagetitle), а не текущий из URL. baseIds возвращались в порядке pagetitle, paginateIds() резал в этом порядке, и только paginator сортировал полученную порцию по цене — отсюда «сортировка на текущей странице». Фикс — прокидывать актуальный sortby/sortdir в $elementParams до вызова getIds(). Дополнительно WarmupKeyBuilder::SELECTION_PARAMS теперь включает sortby/sortdir — иначе кэш warmup возвращал бы baseIds со старым порядком по прежнему hash и фикс на кэширующих сайтах не срабатывал бы. Issue surfaced on dev.sharptool.ru.

Последние обсуждения в сообществе MODX.pro