Skip to content
mFilter
mFilter
Фасетная фильтрация для MODX 3 с поддержкой SEO URL
  • MODX 3
  • PHP 8.1
  • Vue 3
  1. Компоненты
  2. mFilter
  3. Интерфейс админки
  4. Наборы фильтров

Наборы фильтров

Набор фильтров отвечает на два вопроса: какие фильтры показывать и на каких страницах. Наборы создаются на вкладке «Наборы фильтров» — с них начинается настройка 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Поле или опция, если её имя отличается от ключа фильтра
enabledfalse — фильтр в наборе остаётся, но не выводится
sort, sort_dirПорядок значений: count (по умолчанию) или value, направление desc или asc
hide_zeroУбирает значения, по которым нет товаров
min_valuesТолько у типов «Родители» и «Категории товаров»: не выводить фильтр, если значений меньше указанного. По умолчанию 2
prefix, suffixТекст до и после значения на ползунке: от,
label_yes, label_noПодписи переключателей булева фильтра

Привязка к страницам

В дереве справа отмечаются страницы каталога. Товары, неопубликованные и удалённые ресурсы в дереве не показываются.

Одна страница принадлежит одному набору. Страница, уже привязанная к другому набору, помечена в дереве меткой «занято» — если отметить её здесь, прежняя привязка снимется без предупреждения.

Наследование на дочерние страницы избавляет от привязки каждого раздела по отдельности: набор, привязанный к «Каталогу», действует и на его подразделах. Работает это так: для страницы без своей привязки mFilter поднимается вверх по дереву до первого привязанного родителя, у которого включено наследование. Родитель с выключенным наследованием поиск не прекращает — подъём идёт дальше, к его родителю.

Удаление

Удаление набора снимает его привязки к страницам и сбрасывает кэш значений этих страниц. Слаги, SEO-шаблоны и паттерны URL остаются: они привязаны к ключу фильтра, а не к набору.