Разработчикам · 2 МИН ЧТЕНИЯ

События и плагины

Расширяйте поведение CMS через существующие точки событий.

Перед началом

Найдите событие в текущем коде и изучите передаваемые данные. Название события само по себе не описывает контракт и момент его выполнения.

Порядок действий

  1. Проверьте существующие плагины и место вызова события. Уточните, какие данные уже загружены и можно ли изменять payload.
  2. Создайте обработчик в структуре плагина и зарегистрируйте его предусмотренным механизмом движка.
  3. Используйте переданные данные; не повторяйте запросы к БД без необходимости. Для тяжёлой работы рассмотрите существующую очередь.
  4. Сохраните ограничения безопасности и транзакционные границы исходного действия. Ошибка расширения не должна оставлять связанные данные в частично изменённом состоянии.
  5. Проверьте включённый и выключенный плагин, повторный вызов и взаимодействие с другими подписчиками.
Обратите внимание. Для скидок магазина используйте предусмотренные интерфейсы правил и providers. Единственная точка runtime-расчёта — App::shopDiscounts(); прямое изменение цены из плагина нарушает контракт.

Проверьте результат

Расширение работает только в нужном сценарии, порядок обработчиков понятен, запросы и результаты не дублируются.

Скриншот инструкции