Таблица oc_startup
Таблица oc_startup является важным компонентом механизма расширений (модификаторов) в OpenCart. Она содержит список PHP-файлов, которые система должна автоматически загрузить и выполнить на ранних этапах инициализации, до обработки основного контроллера.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
startup_id |
int |
Уникальный идентификатор записи автозагрузки. Автоинкрементное поле. |
code |
varchar(128) |
Уникальный код расширения (модификатора). Обычно соответствует названию директории расширения в system/library.
|
action |
text |
Путь к PHP-файлу, который должен быть выполнен при автозагрузке. Обычно указывается путь относительно корня сайта, например: system/library/my_modification/my_startup.php.
|
status |
tinyint(1) |
Статус записи: 1 - активно (файл будет загружен), 0 - неактивно (файл игнорируется).
|
sort_order |
int |
Порядок выполнения файлов автозагрузки. Файлы выполняются в порядке возрастания этого значения. |
Как это работает
При установке расширения через установщик OpenCart (OCMOD) или вручную, в таблицу oc_startup добавляется новая запись. В поле action указывается путь к файлу, который содержит код для модификации поведения системы.
В процессе загрузки OpenCart (в файле system/engine/startup.php) система выполняет следующий алгоритм:
1. Выбирает все активные записи (status = 1) из таблицы oc_startup, отсортированные по sort_order.
2. Для каждой записи проверяет существование файла, указанного в поле action.
3. Если файл существует, он подключается с помощью функции require_once.
Это позволяет расширениям выполнять свой код до инициализации основных компонентов фреймворка, что критически важно для модификации стандартного поведения OpenCart, переопределения классов (через override) или регистрации своих обработчиков событий.
Поле sort_order играет важную роль, так как определяет порядок, в котором различные модификации применяются к системе. Это может быть важно, если одно расширение зависит от функциональности, добавленной другим.
Пример SQL-запроса
Посмотреть все активные файлы автозагрузки можно следующим запросом:
SELECT startup_id, code, action, sort_order
FROM oc_startup
WHERE status = 1
ORDER BY sort_order ASC;
Смотрите также
-
таблицу
oc_modification,
которая хранит XML-модификации для системы -
таблицу
oc_extension,
которая управляет установленными расширениями -
таблицу
oc_setting,
которая хранит настройки системы и расширений