
- MODX 3
- PHP 8.2
- miniShop3
- Vue 3


Если установлен ms3variants, ms3OptionsColor дописывает к каждому варианту в каталоге цвет из словаря. Пакет не создаёт варианты и не меняет цену, остаток или _variant_id. Он дополняет готовый список.
usePackages=ms3Variants.ms3optionscolor_variants_decorate = Да.options есть ключ из ms3optionscolor_default_option_key (например color) с точным совпадением значения со словарём.Отключить: ms3optionscolor_variants_decorate = Нет. Варианты остаются как у ms3variants, без swatches.
{'!msProducts' | snippet : [
'parents' => $_modx->resource.id,
'usePackages' => 'ms3Variants',
'tpl' => 'tpl.msProducts.row'
]}[[!msProducts?
&parents=`[[*id]]`
&usePackages=`ms3Variants`
&tpl=`tpl.msProducts.row`
]]После плагинов в строке каталога есть variants, has_variants, variants_json. Пакет дописывает variants[].swatches для ключей из настройки.
Цикл по вариантам в Fenom-чанке (pdoTools):
{if $has_variants?}
{foreach $variants as $variant}
{set $sw = $variant.swatches.color ?: []}
<span data-ms3oc-swatch
{if !$sw.color && !$sw.pattern}data-empty{/if}
{if $sw.pattern}data-has-pattern{/if}
style="{if $sw.color}background-color:#{$sw.color};{/if}{if $sw.pattern}background-image:url('{$sw.pattern}');{/if}"></span>
{$variant.options_array.color}
{/foreach}
{/if}Если в настройке несколько ключей (color,material), читайте swatches.material и остальные ключи так же.
Структура одной записи swatch:
| Поле | Описание |
|---|---|
color | HEX без # |
pattern | URL паттерна |
title | Подпись из словаря |
value | Значение опции (есть даже без совпадения со словарём) |
Без точного совпадения option_key + value со словарём поля color / pattern / title пустые.
![Каталог с variants[].swatches](/assets/storefront-variants.qo4L2f06.png)
Если варианты обходить не нужно, в том же чанке вызовите сниппет:
{'!ms3OptionsColor' | snippet : [
'product' => $id,
'options' => 'color',
'tpl' => 'tplMs3OptionsColor',
'limit' => 6
]}[[!ms3OptionsColor?
&product=`[[+id]]`
&options=`color`
&tpl=`tplMs3OptionsColor`
&limit=`6`
]]Ветка с options._variant_id в чанке tplMs3OptionsColorCart показывает цвет без смены опции и ссылку на товар ?variant=ID. Смену варианта и цену ведёт ms3variants. Вывод на сайте.
| Симптом | Что проверить |
|---|---|
Нет variants[].swatches | usePackages=ms3Variants, настройка decorate = Да |
Пустой swatches.color | Значение опции буквально совпадает со словарём |
Нет variants вообще | ms3variants и параметр листинга |
| Стили свотча нулевые | ms3optionscolor_frontend_css |
Как устроено в событиях: События. Сценарий: Flow I. Настройка: Системные настройки.