
Наборы фильтров
Набор фильтров отвечает на два вопроса: какие фильтры показывать и на каких страницах. Наборы создаются на вкладке «Наборы фильтров» — с них начинается настройка 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 со списком ресурсов — особый случай: поле «Возможные значения» у него пустое, список задаётся настройками ввода (родитель, глубина), а хранит он идентификаторы страниц. Подпись для таких значений берётся из названия страницы, писать привязку не нужно.
Название подставляется там, где значение видит посетитель: в фильтре, в алиасе адреса, на плашке выбранного значения и в заголовке, который mFilter собирает без SEO-шаблона. В SEO-шаблон такое значение попадает числом. Значение, ссылающееся на удалённую страницу, остаётся числом и в фильтре — названия для него уже нет.
Название запоминается при индексации, поэтому переименование самой страницы до фильтра сразу не доходит: пока индекс не пересобран, в фильтре останется прежнее. Запускает пересборку кнопка «Переиндексация» в шапке админки или сохранение товара с этим значением.
TV с несколькими значениями
TV, в котором выбрано несколько значений, хранит их одной строкой: Красный||Синий. mFilter раскладывает её на отдельные значения: в фильтре стоят «Красный» и «Синий», а не их сочетание, и товар находится по любому из своих значений.
| Тип ввода TV | Разделитель |
|---|---|
Теги: tag, autotag | Запятая |
| Остальные: список с множественным выбором, флажки, текстовое поле | || |
Раскладывать ли строку, решают данные, а не тип ввода: текстовое поле, которое импорт заполнил строкой Красный||Синий, разложится так же. Запятая служит разделителем только у тегов — в текстовом поле Красный, Синий останется одним значением.
Если в фильтре видны сочетания вроде Красный||Синий, индекс собран версией до 1.8.1 — запустите «Переиндексацию» в шапке админки.
Типы
| Тип | Значения | Как выводится |
|---|---|---|
| Стандартный | Текст: опция, 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 остаются: они привязаны к ключу фильтра, а не к набору.
