
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.jsmfilter.api.js— функциональность покрытаcore/ApiClient.jsиcore/FilterAPI.jsmfilter.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 |
