Skip to content
  1. Компоненты
  2. ms3OptionsColor
  3. Витрина
  4. mFilter

mFilter

Пакет добавляет тип фильтра ms3oc. В каталоге покупатель видит квадраты цвета из словаря, а не голый список значений. Встроенный тип mFilter colors пакет не меняет.

Нужен установленный mFilter. Без него событие OnMFilterInit не сработает и типа ms3oc не будет.

Настройка Filter Set

  1. Создайте Filter Set в mFilter и привяжите к странице каталога.
  2. В JSON набора добавьте фильтр по опции:
json
{
  "color": {
    "type": "ms3oc",
    "source": "option",
    "field": "color",
    "label": "Цвет",
    "tpl": "tplMFilterMs3OptionsColor",
    "multiple": true
  }
}
ПолеНазначение
typeВсегда ms3oc для свотчей из словаря
sourceОбычно option
fieldКлюч опции miniShop3, чаще color
labelПодпись блока на витрине
tplЧанк строки: штатный tplMFilterMs3OptionsColor или свой
multipleНесколько значений сразу

Ключ объекта ("color" в примере) должен совпадать с тем, что передаёте в mFilterForm как filters.

Вызов на странице

Сначала сниппет результатов (mFilter / baseIds), затем форма:

fenom
{'!mFilterForm' | snippet : [
  'filters' => 'color',
  'tplItem' => 'tplMFilterMs3OptionsColor'
]}
modx
[[!mFilterForm?
  &filters=`color`
  &tplItem=`tplMFilterMs3OptionsColor`
]]

Параметры mFilter / mFilterForm зависят от вашей сборки. См. сниппеты mFilter. Важно для ms3OptionsColor:

  • в Filter Set указан "type": "ms3oc";
  • filters совпадает с ключом в JSON набора;
  • mFilterForm отдаёт в item hex / pattern / ral (или плоские $hex, $pattern, $ral);
  • при необходимости явно задайте &tplItem=tplMFilterMs3OptionsColor.

Фильтр ms3oc

Чанк tplMFilterMs3OptionsColor

Штатный чанк рисует checkbox, свотч и подпись. Два формата данных:

ИсточникПоля
demo / ручной вызов$item.value, $item.label, $item.hex, $item.pattern, $item.ral, $item.count, $item.selected
mFilterFormплоские $value, $label, $hex, $pattern, $ral, $count, $active

Минимальный свой ряд (Fenom):

fenom
<label data-ms3oc-filter{if $active?} data-selected{/if}>
  <input type="checkbox" name="{$key}[]" value="{$value | escape}" {if $active?}checked{/if}>
  <span data-ms3oc-swatch data-size="sm"
        {if !$hex && !$pattern}data-empty{/if}
        style="{if $hex}background-color:{$hex};{/if}{if $pattern}background-image:url('{$pattern}');{/if}"></span>
  <span data-ms3oc-filter-label>{$label ?: $value}</span>
  <span data-ms3oc-filter-count>{$count}</span>
</label>

CSS витрины (ms3optionscolor_frontend_css) должен быть включён, иначе свотч в фильтре часто без размера.

Типичные ошибки

СимптомЧто проверить
Нет свотчей, только текстВ Filter Set стоит colors, а не ms3oc
Тип ms3oc не находитсяУстановлен mFilter, очищен кэш, плагин подписан на OnMFilterInit
Пустые квадратыВ словаре нет HEX/pattern для значений опции
Нет стилейms3optionscolor_frontend_css или ручной <link> на css/web/main.css

Сценарий со скриншотом: Flow G. Общая витрина: Вывод на сайте.