НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
110 of 152 menu

Таблица oc_event

Таблица oc_event является ядром системы событий (Event System) в OpenCart, начиная с версии 2.x. Она заменяет систему модификаторов (Modification System) VQMod и служит для подключения пользовательского кода (обычно из установленных модулей-расширений) к стандартным системным событиям, таким как "после сохранения заказа", "до отображения страницы" и многим другим.

Поля

Поле Тип данных Описание
event_id int Уникальный идентификатор события (первичный ключ с автоинкрементом).
code varchar(128) Уникальный код события, по которому система находит и запускает обработчики. Связывает событие с конкретным расширением. Например: module_newsletter.
trigger text Путь к системному событию (триггеру), которое будет вызывать метод. Определяет, *когда* должен сработать код. Например: catalog/model/checkout/order/addOrder/after.
action text Путь к методу, который должен быть выполнен при срабатывании события. Определяет, *что* должно выполниться. Например: extension/module/newsletter/send.
status tinyint(1) Статус события: 1 - активно (включено), 0 - неактивно (выключено). Позволяет временно отключать обработчики событий без их удаления из базы данных.
sort_order int Порядок сортировки для выполнения событий, если на одно системное событие подписано несколько обработчиков. События с меньшим значением выполняются первыми.

Как это работает

Система событий OpenCart работает по принципу "издатель-подписчик". Ядро системы (framework) является "издателем" - оно генерирует события в ключевых точках выполнения кода (например, до или после загрузки модели, сохранения данных, отображения HTML-кода). Модули-расширения выступают в роли "подписчиков" - они регистрируют в таблице oc_event свои обработчики на нужные им события.

Процесс работы выглядит следующим образом:

1. При установке модуля через установщик OpenCart (OCMOD) или вручную в таблицу oc_event добавляется одна или несколько записей. В поле trigger указывается системное событие, а в поле action - путь к методу, который должен быть вызван.

2. Во время работы магазина, когда исполнение кода доходит до точки, для которой зарегистрировано событие (например, после метода addOrder в модели заказа), система проверяет таблицу oc_event на наличие активных обработчиков для этого события.

3. Все найденные активные обработчики (status = 1) сортируются по sort_order и выполняются последовательно.

Стандартные префиксы путей для триггеров:

- admin/ - события в админ-панели.
- catalog/ - события на витрине магазина (front-end).
- system/ - события на уровне системной библиотеки.

Стандартные суффиксы для моментов вызова:

- /before - событие вызывается *до* выполнения основного метода.
- /after - событие вызывается *после* выполнения основного метода.

Пример SQL-запроса

Посмотреть все активные события, связанные с обработкой заказов:

SELECT * FROM oc_event WHERE status = 1 AND trigger LIKE '%order%' ORDER BY sort_order ASC;

Смотрите также

  • таблицу oc_modification,
    которая хранит OCMOD-модификации для переопределения core-файлов
  • таблицу oc_extension,
    которая хранит список установленных расширений
  • таблицу oc_setting,
    которая хранит настройки модулей и системы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить