new

mFilter

Фильтр для MODX3 с поддержкой SEO-friendly URL
Автор дополнения
Николай Савин
Пакетов
20
Закачек
32 889
Обычно отвечает в течение суток
Автор дополнения
Пакетов
20
Закачек
32 889
Обычно отвечает в течение суток
Версия 1.4.6-beta1
Дата выпуска 26.07.2026
Загрузки 124
Просмотры 1 312
Внимание, этот компонент требует 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.6-beta1

Исправления

  • Параметр where в сниппете mFilter ронял снипет на PHP 8.1+ при передаче массива. Клиенты, копируя пример из документации ('where' => ['Data.price:>' => 1000] через Fenom), получали пустой каталог и HTTP 500. Причина: json_decode($where, true) без проверки типа — в PHP 8.1+ это TypeError, потому что $where приходил из Fenom как массив. Теперь where принимает и массив (нативный формат xPDO), и JSON-строку (для MODX-тегов / URL-параметров). Issue surfaced on dev.sharptool.ru.

Возможности

  • Параметр where теперь реально работает в native mode (без параметра element). Раньше он парсился в сниппете, но никуда не пробрасывался — заявленная в документации фича была мёртвой. Теперь Filter::apply() принимает опцию where через $options, применяет условия к query и count-query, и авто-джойнит msProductData (alias Data), если хотя бы один ключ условия начинается с Data.. Element mode (через element='msProducts') продолжает работать как раньше — там where уходит в msProducts, у которого Data уже подключён.

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