Skip to content
msCatalyst
msCatalyst
Фасетный фильтр, поиск и синхронизация каталога для miniShop2 и MiniShop3
  • MODX 2
  • MODX 3
  • miniShop2
  • miniShop3
  • PHP 7.2
  1. Компоненты
  2. msCatalyst
  3. Сниппеты
  4. msCatalyst

msCatalyst ​

Главный сниппет: панель фильтров, счётчики, сортировка, поиск, постраничность и карточки товаров. Вызывается без кэша.

modx
[[!msCatalyst?
  &parents=`5`
  &facets=`vendor, parent, option:color, ms:price|range`
]]

Параметры ​

ПараметрПо умолчаниюОписание
facetsvendor, parentСписок фасетов, синтаксис ниже.
parentsтекущий ресурсID разделов через запятую.
depth10Глубина поиска товаров внутри разделов.
includeCategories1Учитывать дополнительные категории товаров.
templatesТолько товары с этими ID шаблонов.
showUnpublished0Показывать неопубликованные товары.
showHidden1Показывать товары со снятой галкой «Показывать в меню».
sortsmenuindex, pagetitle, ms:price:asc, ms:price:descВарианты сортировки. Первый действует по умолчанию и не попадает в адрес.
limits12, 24, 48Варианты количества на странице. Первый действует по умолчанию.
searchFieldspagetitle^3, longtitle, ms:article^5, introtext, description, contentПоля поиска с весами: поля ресурса, ms:, tv:, option:. Совпадение в названии поднимает товар выше совпадения в описании.
searchParamsearchПараметр адреса для поиска. Смените, если search на сайте занят.
searchMin2Минимальная длина запроса.
searchModefilterfilter, page, live или live+page, см. msCatalystSearch.
searchPageID или адрес страницы результатов для page и live+page.
suggestLimit8Число подсказок в живом поиске.
richSearch1Словоформы, транслит и опечатки.
setИмя набора фильтров, см. ниже.
seooffoff, native, seofilter или both, см. SEO.
paginationbothpages (номера), more (кнопка «Показать ещё»), both или none.
first8Сколько вариантов группы видно до кнопки «Показать все». 0 показывает все.
hideSingle1Скрывать группы, где меньше двух вариантов.
hideUnavailable1Скрывать варианты без товаров при текущих фильтрах. Доступные варианты стоят вверху группы. С 0 недоступные остаются серыми внизу списка.
langЯзык каталога, например en. Если пусто, язык определяется сам, см. Мультиязычность.
langStrict1Localizator: скрывать товары без перевода на текущий язык. С 0 такие товары показываются с исходными полями.
view1Переключатель «плиткой / списком».
noindexFiltered1noindex, follow на страницах с фильтрами.
elementmsProductsСниппет вывода карточек.
tplmsCatalyst.cardЧанк карточки, msCatalyst передаёт его в element. Со своим чанком задайте &rowsClass под сетку темы.
tplOutermsCatalyst.outerЧанк всего блока.
tplGroupmsCatalyst.groupЧанк группы с чекбоксами.
tplOptionmsCatalyst.optionЧанк одного чекбокса.
tplRangemsCatalyst.rangeЧанк диапазона.
tplEmptymsCatalyst.emptyЧанк «ничего не найдено».
rowsClassmsc-gridКласс контейнера карточек. Со своим чанком карточки можно указать класс сетки темы, например row.
breakpoint992Ширина в пикселях, ниже которой панель становится выезжающей.
toPlaceholderЗаписать вывод в плейсхолдер.
css, js, cacheTimeиз настроекПереопределяют системные настройки для одного вызова.

Параметры, которых msCatalyst не знает, уходят в сниппет element. Так передаются &includeTVs, &includeThumbs и другие параметры msProducts. msCatalyst сам задаёт resources, parents, sortby, limit и offset, а where и tvFilters отбрасывает: фильтрацией занимается он.

Синтаксис фасетов ​

Фасеты перечисляются через запятую. Фасет состоит из источника, имени и модификаторов через |:

источник:имя|модификатор|модификатор=значение

Источники ​

ИсточникПримерОткуда берутся значения
vendorvendorПроизводитель товара. Подпись: название производителя.
parentparentРодительский раздел товара. Подпись: pagetitle.
msms:color, ms:priceПоле таблицы ms2_products (в MiniShop3 ms3_products). JSON-массивы color, size, tags раскладываются на отдельные значения.
tvtv:colorTV. Несколько значений делятся по ||. Подписи и порядок берутся из «Возможных значений» TV в формате Подпись==значение.
optionoption:sizeОпция товара (ms2_product_options или ms3_product_options). Заголовок группы: подпись опции.
resourceresource:templateПоле ресурса: template, publishedon, createdby и другие.
msop, variantmsop:price|rangeПоля модификаций msOptionsPrice2 и ms3Variants, см. MODX 3 и модификации.

Модификаторы ​

МодификаторПримерЧто делает
rangems:price|rangeДиапазон «от и до» вместо чекбоксов. Не работает для vendor и parent.
step|step=100Шаг ползунка.
title|title=ЦветЗаголовок группы.
alias|alias=cКлюч в адресе вместо имени: ?c=red. Обязателен, если два фасета получают одинаковое имя.
sort|sort=countПорядок вариантов: label (по подписи, по умолчанию), count (по количеству), value (по значению, числа в натуральном порядке), index (порядок из TV или menuindex разделов).
lex|lex=color_Подпись значения red берётся из записи лексикона color_red, если она есть.
first|first=5Свой порог «Показать все» для группы.
open, closed|closedГруппа раскрыта или свёрнута по умолчанию. Без модификатора раскрыты первая группа, диапазоны и группы с выбранными значениями.
and|andТовар должен иметь все выбранные значения. По умолчанию хватает любого.
labelparent|label=menutitleДля parent: подпись из menutitle или longtitle.
delimitertv:tags|delimiter=,Разделитель значений TV вместо ||.

JSON ​

Вместо строки можно передать JSON-массив. Это удобно, если в заголовке нужна запятая:

modx
&facets=`[
  {"source": "vendor", "sort": "count"},
  {"source": "ms", "name": "price", "range": true, "step": 100},
  {"source": "tv", "name": "color", "title": "Цвет, оттенок", "lex": "color_"}
]`

Занятые ключи ​

Ключи mscatalyst, sort, limit, page, параметр поиска и параметры адреса MODX (q, id) заняты. Если имя фасета совпадает с ними, задайте |alias=. Ошибки конфигурации msCatalyst пишет в журнал ошибок MODX с префиксом [msCatalyst], и сниппет в этом случае ничего не выводит.

Формат адреса ​

/catalog/?vendor=1,3&size=10%2C5%20mm&price=1000..2000&search=шланг&sort=ms-price-desc&limit=24&page=2
  • Несколько значений одного фасета перечисляются через запятую. Запятая внутри значения кодируется как %2C.
  • Форма без JavaScript отправляет vendor[]=1&vendor[]=3. msCatalyst понимает оба вида.
  • Диапазон записывается как price=1000..2000, price=1000.. или price=..2000. Форма без JavaScript отправляет price_min и price_max, это тоже работает.
  • Значения сортировки: pagetitle-asc, ms-price-desc, tv-rating-desc.
  • AJAX-запросы идут на тот же адрес с параметром mscatalyst=<хэш>. В адресную строку этот параметр не попадает.

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

Набор хранит фасеты, сортировки и поля поиска для нескольких каталогов сразу. &set=`catalog` читает системную настройку mscatalyst_set_catalog или файл core/components/mscatalyst/sets/catalog.json. Пример лежит в sets/catalog.example.json. Наборы удобно вести на вкладке «Наборы фильтров» страницы компонента.