
mFilter
Фасетная фильтрация для MODX 3 с поддержкой SEO URL


Паттерны определяют правила распознавания фильтров в SEO URL.
Паттерны позволяют:
| Тип | URL | Паттерн |
|---|---|---|
| Стандартный | /catalog/vendor_apple/ | {key}_{value} |
| Без ключа | /catalog/apple/ | Кастомный паттерн |
| Диапазон | /catalog/price_1000-5000/ | price_(\d+)-(\d+) |
| Множественный | /catalog/color_red,blue/ | {key}_{value}(,{value})* |
| Столбец | Описание |
|---|---|
| Паттерн | Регулярное выражение |
| Ключ фильтра | К какому фильтру относится |
| Описание | Пояснение |
| Активен | Включён/выключен |
| Порядок | Приоритет применения |
| Поле | Описание |
|---|---|
| Паттерн | Регулярное выражение для URL-сегмента |
| Ключ фильтра | Ключ из набора фильтров |
| Описание | Для чего паттерн |
| Активен | Использовать ли |
Используется синтаксис регулярных выражений PHP (PCRE).
# Одно значение
vendor_([a-z0-9-]+)
# Диапазон
price_(\d+)-(\d+)
# Множественные значения
color_([a-z0-9-]+(?:,[a-z0-9-]+)*){key}_([a-z0-9-]+)Распознаёт: vendor_apple, color_krasnyj
{key}_(\d+)-(\d+)Распознаёт: price_1000-5000, weight_100-500
{key}_([a-z0-9-]+(?:,[a-z0-9-]+)*)Распознаёт: color_red,blue,green
Паттерны применяются в порядке поля Порядок (rank):
Паттерн: price_(\d+)-(\d+)
Ключ: price
Описание: Диапазон ценURL /catalog/price_10000-50000/ → price: {min: 10000, max: 50000}
Паттерн: date_(\d{4})-(\d{2})-(\d{2})_to_(\d{4})-(\d{2})-(\d{2})
Ключ: date
Описание: Диапазон датURL /catalog/date_2024-01-01_to_2024-12-31/ → диапазон дат
Паттерн: ^(apple|samsung|xiaomi)$
Ключ: vendor
Описание: Производители напрямуюURL /catalog/apple/ → vendor: apple
$mfilter = $modx->services->get('mfilter');
$urlRouter = $mfilter->getUrlRouter();
// Распарсить URL
$parsed = $urlRouter->parse('/catalog/vendor_apple/price_1000-5000/');
// [
// 'filters' => ['vendor' => ['apple'], 'price' => ['min' => 1000, 'max' => 5000]],
// 'tech' => ['sort' => 'price', 'page' => 1]
// ]Включите mfilter.debug для логирования:
key_value работает для большинства случаев