
Наборы фильтров
Набор фильтров отвечает на два вопроса: какие фильтры показывать и на каких страницах. Наборы создаются на вкладке «Наборы фильтров» — с них начинается настройка mFilter.
Список наборов
| Столбец | Что показывает |
|---|---|
| Страницы | Сколько страниц привязано к набору |
| Фильтры | Сколько фильтров в наборе |
| Наследование | Действует ли набор на дочерних страницах привязанных |
| Приоритет | Только порядок в этом списке. На выбор набора для страницы не влияет |
| Статус | Выключенный набор не действует ни на одной странице |
Кнопка «Пересобрать кэш» заново строит карту «страница → набор». При сохранении и удалении набора она перестраивается сама; кнопка нужна, когда дерево ресурсов меняли в обход админки.
Фильтры
Таблица фильтров — четыре колонки: «Ключ», «Источник», «Тип», «Заголовок». Порядок строк — порядок блоков в форме, строки перетаскиваются.
- Ключ — имя, под которым фильтр приходит в запросе и попадает в адрес:
/catalog/made_in--germaniya/. В подсказках — ключи, у которых уже есть слаги. - Источник и Тип подставляются по ключу, когда вы его вводите или меняете. Заданные до этого значения при смене ключа перезаписываются.
- Заголовок — подпись над блоком. Если пусто, берётся подпись TV или опции MiniShop3, а при их отсутствии — название из лексикона.
Две строки не могут занять один ключ: сохранение отклоняется и показывает номера строк. Если ключ фильтра отличается от его поля, он виден под полем — например, у фильтра {"brand": {"field": "product_brand"}} в колонке стоит product_brand, а под ним подсказка «Ключ фильтра: brand».
Источники
| Источник | Откуда значения |
|---|---|
| miniShop3 — данные товаров | Колонки товара: price, old_price, article, made_in, vendor_id, new… |
| miniShop3 — опции | Опции товаров: цвет, размер и остальные |
| Template Variables | Значения TV |
| Поля ресурсов | Поля ресурса MODX: pagetitle, template, parent, publishedon… |
Источники MiniShop3 доступны, только если он установлен.
Подписи значений TV
Подпись рядом со значением берётся из поля «Возможные значения» самого TV. Список пишется как в MODX: в записи Красный==red значение red получит подпись «Красный», а без == подпись совпадает со значением.
Вместо списка можно поставить привязку:
| Привязка | Что делает |
|---|---|
@SELECT pagetitle, id FROM [[+PREFIX]]site_content WHERE parent = 5 | Первая колонка — подпись, вторая — значение |
@CHUNK имя, @FILE путь | Содержимое разбирается как обычный список |
@EVAL | Не выполняется: запускает произвольный код |
[[+PREFIX]] в запросе заменяется на префикс таблиц сайта — с ним привязку можно перенести на другой сайт как есть.
Запрос в @SELECT должен быть один. Второй оператор ищется по точке с запятой, поэтому запись, где точка с запятой стоит внутри строки — CONCAT(pagetitle, '; ', longtitle), — тоже отклоняется, хотя сам MODX её выполняет. Такую привязку перепишите без точки с запятой.
Подписи попадают в базу при индексации TV, а она запускается кнопкой «Сгенерировать» на вкладке «Алиасы». После правки поля «Возможные значения» нажмите её, иначе в фильтре останутся прежние подписи.
Типы
| Тип | Значения | Как выводится |
|---|---|---|
| Стандартный | Текст: опция, TV, поле | Список значений |
| Числовой (диапазон) | Числа | Ползунок и поля «от» и «до» |
| Булев (да/нет) | 1 и 0 | Переключатели |
| Родители (категории) | Разделы MODX, значение — id | Список |
| Категории товаров (MS3) | Категории товаров, значение — id | Список |
| Дата | Даты целиком | Список |
| День месяца, Месяц, Год | Часть даты | Список |
| Производители | Производители MiniShop3, значение — id | Список |
| Цвета | Опция цвета | Плашки с цветом |
Типы «Категории товаров», «Производители» и «Цвета» требуют MiniShop3. Какой чанк отвечает за каждый вид блока — в Шаблонах.
Настройки, которых нет в таблице
Набор хранится в базе как JSON, и у фильтра есть настройки, которые таблица не показывает, но и не стирает при сохранении:
| Настройка | Что делает |
|---|---|
field | Поле или опция, если её имя отличается от ключа фильтра |
enabled | false — фильтр в наборе остаётся, но не выводится |
sort, sort_dir | Порядок значений: count (по умолчанию) или value, направление desc или asc |
hide_zero | Убирает значения, по которым нет товаров |
min_values | Только у типов «Родители» и «Категории товаров»: не выводить фильтр, если значений меньше указанного. По умолчанию 2 |
prefix, suffix | Текст до и после значения на ползунке: от, ₽ |
label_yes, label_no | Подписи переключателей булева фильтра |
Привязка к страницам
В дереве справа отмечаются страницы каталога. Товары, неопубликованные и удалённые ресурсы в дереве не показываются.
Одна страница принадлежит одному набору. Страница, уже привязанная к другому набору, помечена в дереве меткой «занято» — если отметить её здесь, прежняя привязка снимется без предупреждения.
Наследование на дочерние страницы избавляет от привязки каждого раздела по отдельности: набор, привязанный к «Каталогу», действует и на его подразделах. Работает это так: для страницы без своей привязки mFilter поднимается вверх по дереву до первого привязанного родителя, у которого включено наследование. Родитель с выключенным наследованием поиск не прекращает — подъём идёт дальше, к его родителю.
Удаление
Удаление набора снимает его привязки к страницам и сбрасывает кэш значений этих страниц. Слаги, SEO-шаблоны и паттерны URL остаются: они привязаны к ключу фильтра, а не к набору.
