Skip to content
  1. Компоненты
  2. ms3OptionsColor
  3. Для разработчика
  4. События

События

Подписки плагина

Плагин ms3OptionsColor слушает:

СобытиеДействие
OnLoadWebDocumentПодключает стили свотчей на сайте, если включён ms3optionscolor_frontend_css
msOnManagerCustomCssJsВкладка Swatches и квадраты цвета в чипах опции на карточке товара
OnMFilterInitРегистрирует тип фильтра ms3oc
msOnProductPrepareДобавляет цвета из словаря в варианты каталога (после ms3variants)

Свою логику вешайте отдельным плагином. На OnMFilterInit зарегистрируйте другой type-ключ. Не перетирайте ms3oc, если хотите параллельный тип.

Дополнение вариантов ms3variants

Пакет не создаёт варианты и не меняет цену, остаток или _variant_id. Он только дополняет уже готовый список вариантов от ms3variants:

  1. Смотрит настройку ms3optionscolor_variants_decorate.
  2. Если в строке каталога есть variants, один раз за запрос читает словарь цветов.
  3. Для совпавших ключа и значения пишет в swatches поля color, pattern, title.
  4. Обновляет variants_json для чанка.

В листинге нужен usePackages=ms3Variants. Пример разметки: ms3variants.

События словаря

При сохранении и удалении цвета в словаре вызываются:

СобытиеКогдаПараметры
ms3ocColorBeforeSaveдо записи в БДобъект color, исходные данные data
ms3ocColorSaveпосле успешной записиобъект color
ms3ocColorBeforeRemoveдо удаленияобъект color
ms3ocColorRemoveпосле удаленияобъект color

Отменить сохранение через returnedValues нельзя. В BeforeSave можно менять поля объекта $color. Исходный массив остаётся в data. После записи смотрите итоговый объект в ms3ocColorSave.

Пример плагина

php
<?php
/** @var modX $modx */
switch ($modx->event->name) {
    case 'ms3ocColorBeforeSave':
        /** @var xPDOObject $color */
        $color = $modx->getOption('color', $scriptProperties);
        if ($color && $color->get('title') === '') {
            $color->set('title', $color->get('value'));
        }
        break;
}

Свою подписку добавьте в Элементы → Плагины → Системные события.