
Паттерны URL
Паттерн меняет вид фильтра в SEO-адресе: переименовывает ключ, убирает его или ставит фильтр раньше других. Без паттерна фильтр записывается ключом и значением — /catalog/made_in--germaniya/. Разделители задают настройки mfilter.url_separator и mfilter.values_separator.
Паттерн создаётся на вкладке «Паттерны» кнопкой «Добавить паттерн» и действует на всех страницах каталога с фильтрами.
Поля
| Поле | Что задаёт |
|---|---|
| Ключ фильтра | Ключ из набора фильтров: made_in, color. На один ключ — один паттерн. Есть ли такой ключ в наборах, mFilter не проверяет — сверьте написание |
| URL паттерн | Вид сегмента: текст и подстановки. Новый паттерн заполнен {key}_{value} — с ним адрес станет made_in_germaniya. Чтобы оставить вид ключ--значение и задать только приоритет, очистите поле. При каждом следующем открытии окно снова подставляет {key}_{value} — очищайте поле перед сохранением |
| Тип парсинга | Как читать значение из адреса: «По умолчанию» — список значений, «Булево» — да или нет, «Диапазон» — две границы. «URL паттерн» с {min} и {max} читается как диапазон при любом типе парсинга |
| Приоритет | От 0 до 100, меньше — раньше: порядок фильтров в адресе и порядок проверки при открытии ссылки |
| Скрыть ключ в URL | В адресе только значение: /catalog/seryj/ |
| Активен | Выключенный паттерн не действует — фильтр пишется ключом и значением |
Подстановки
«URL паттерн» — не регулярное выражение: всё, кроме подстановок, попадает в адрес как есть.
| Подстановка | Что попадает в адрес |
|---|---|
{key} | Ключ фильтра |
{value}, {values} | Значение — алиас с вкладки Алиасы: «Германия» → germaniya. Несколько значений соединяются через -or- |
{min}, {max} | Границы диапазона, см. Диапазоны |
Переименовать ключ
Ключ made_in, URL паттерн sdelano_v--{value}:
/catalog/sdelano_v--germaniya/
/catalog/sdelano_v--germaniya-or-kitaj/- Адреса прежнего вида —
/catalog/made_in--germaniya/— тоже открываются. Перенаправления со старого адреса нет. - Канонический адрес в плейсхолдере
mfilter.seo.canonicalуказывает на новый вид — выведите его в шаблоне ресурса, см. Плейсхолдеры. - Карта сайта отдаёт прежние адреса, пока не истечёт её кэш.
- Если потом поменять «URL паттерн», ссылки с
sdelano_v--будут отдавать 404.
Скрыть ключ
Ключ color, флажок «Скрыть ключ в URL», URL паттерн {value}:
/catalog/seryj/
/catalog/seryj-or-sinij/С флажком поле «URL паттерн» не учитывается — кроме диапазона. Без флажка не оставляйте «URL паттерн» из одного {value}: такой паттерн подходит к любому сегменту и забирает адреса других фильтров — они отдают 404.
Не для любого фильтра
Скрыть ключ можно, если у значений фильтра есть алиасы — текстовые значения, разделы, производители, цвета — или это год, месяц, день. Числа, 1/0 булевых фильтров и даты алиасов не получают: с такими значениями ссылка со скрытым ключом отдаст 404. Оставьте им ключ в адресе. У диапазона флажок не ставьте — см. Диапазоны.
Какие адреса без ключа открываются
Сегмент без ключа mFilter сверяет с алиасами фильтров со скрытым ключом. Если одинаковый алиас есть у двух таких фильтров, ссылка откроется с фильтром, у которого приоритет меньше.
Без паттерна адрес без ключа тоже открывается: последним шагом mFilter ищет алиас по всем фильтрам. Сам он таких ссылок не строит, но набранный вручную /catalog/seryj/ откроет ту же страницу, что /catalog/color--seryj/.
У года, месяца и дня алиасов нет — такой сегмент узнаётся по виду значения, который задаёт тип фильтра:
| Тип | Что принимается | Пример адреса |
|---|---|---|
| Год | Четыре цифры | /catalog/2026/ |
| Месяц | ГГГГ-ММ | /catalog/2026-03/ |
| День месяца | От 1 до 31, без ведущего нуля | /catalog/18/ |
Значение другого вида — ошибка 404: /catalog/9999999/, /catalog/2026-13/, /catalog/05/. Проверяется каждое значение сегмента, поэтому /catalog/2026-or-9999999/ — тоже 404, а не второй адрес той же страницы.
Если адрес совпадает и с существующей страницей сайта, и с фильтром, открывается страница. Дочерняя страница каталога /catalog/2026/ останется собой, а фильтр по такому адресу не сработает.
Диапазоны
Диапазону нужны обе подстановки — {min} и {max}. Ключ price, URL паттерн ot-{min}-do-{max}:
/catalog/ot-1000-do-5000/Без одной из них паттерн к диапазону не применяется: адрес остаётся вида /catalog/price--1000--5000/. Так же ведут себя паттерны, заданные до появления {min} и {max}, — адреса на работающих сайтах от обновления не меняются.
Адреса вида ключ--от--до открываются и после того, как паттерн задан. Адрес с дробными границами, набранный вручную, открывается, но сам mFilter округляет границы вниз до целого: /catalog/ot-999-do-5000/ вместо 999.5.
Не скрывайте ключ у диапазона
С флажком «Скрыть ключ в URL» mFilter строит адрес по паттерну — /catalog/ot-1000-do-5000/, — но открыть его не может: ссылка отдаёт 404. У паттерна диапазона флажок не ставьте.
Булевы фильтры
В адрес булев фильтр пишется своим значением — 1 или 0. Ключ spb, URL паттерн v-spb-{value}, тип парсинга «Булево»:
/catalog/v-spb-1/При открытии ссылки 1 и yes читаются как «включено», 0 и no — как «выключено». Любое другое значение разбирают другие паттерны.
Порядок фильтров в адресе
Сначала идут фильтры с паттернами по возрастанию приоритета, затем фильтры без паттерна. made_in с приоритетом 0, spb с паттерном v-spb-{value} и приоритетом 5, у vendor_id паттерна нет:
/catalog/sdelano_v--germaniya/v-spb-1/vendor_id--acer/Проверить адрес
Как mFilter разберёт адрес, покажет mfilter.api.parseUrl() в консоли браузера на странице каталога:
// Только часть адреса после раздела: сегменты раздела тоже попадут в разбор
const parsed = await mfilter.api.parseUrl({ url: 'seryj/' });
parsed.filters; // { color: ['Серый'], … }
parsed.unrecognized; // сегменты, которые не удалось разобратьОтвет для seryj/:
{
"success": true,
"filters": {
"color": [
"Серый"
]
},
"tech": [],
"page": 1,
"sort": null,
"limit": null,
"unrecognized": [],
"resource_id": 0
}Для seryj/nesuschestvuet/ лишний сегмент попадает в unrecognized:
{
"success": true,
"filters": {
"color": [
"Серый"
]
},
"tech": [],
"page": 1,
"sort": null,
"limit": null,
"unrecognized": [
"nesuschestvuet"
],
"resource_id": 0
}Подробнее — Headless API.
