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

mFilter 1.3.0

Новые возможности

Select-фильтры: блокировка пустых option

После применения фильтра option с count=0 в <select> получают атрибут disabled. Это позволяет пользователю видеть, какие значения доступны, без необходимости пробовать каждое.

Работает автоматически для всех select-фильтров через механизм suggestions.

Range-фильтры: поддержка десятичных чисел

SEO URL теперь поддерживают десятичные числа в range-сегментах:

/catalog/price_99.50_500.00/

Синхронизация формы с URL при загрузке

При загрузке страницы с фильтрами в URL (SSR) инпуты формы теперь автоматически синхронизируются со значениями из URL. Ранее числовые инпуты range-фильтров могли показывать дефолтные min/max вместо значений из URL.

Улучшения

Удаление legacy JS стека

Удалены устаревшие файлы:

  • mfilter.core.js — заменён на ui/FilterUI.js
  • mfilter.api.js — функциональность покрыта core/ApiClient.js и core/FilterAPI.js
  • mfilter.ui.js — хелперы интегрированы в FilterUI.js

Суммарно удалено ~2500 строк дублирующего кода. FilterUI.js — единственная реализация UI.

Убран захардкоженный список range-фильтров

Ранее парсер URL знал только фиксированный список полей (price, weight, width, height, length, old_price, quantity). Кастомные числовые поля (например, price2, area) не распознавались в URL.

Теперь любой сегмент формата ключ_число_число автоматически трактуется как range-фильтр. Ключ может содержать цифры (price2, area3).

Дефолтная сортировка не попадает в URL

Если текущая сортировка совпадает с дефолтной из параметров сниппета, сегмент sort_* не добавляется в URL.

Автообновление frontend_assets при апгрейде

При обновлении пакета резолвер проверяет системную настройку mfilter.frontend_assets. Если в ней только файлы mFilter (без сторонних) — обновляет до актуального списка. Если обнаружены сторонние файлы — не трогает, пишет предупреждение в лог MODX.

Исправления

  • Range-инпуты без слайдера теперь корректно передаются при submit
  • Пагинация pdoPage больше не протекает в вывод товаров
  • JS: разделитель range использует конфигурируемый urlSep вместо хардкода _
  • JS: option с value="0" корректно обрабатывается при сбросе счётчиков

Ломающие изменения

Что изменилосьЧто делать
window.MFilterCore удалёнИспользуйте window.MFilterUI
window.MFilterAPI удалёнИспользуйте window.mfilter.api
{$results} удалён из outer-чанкаИспользуйте {$rows}
Legacy JS файлы удаленыУдалите <script> теги с mfilter.core.js, mfilter.api.js, mfilter.ui.js из шаблонов. Ассеты подключаются автоматически через mfilter.frontend_assets