Таблица oc_setting
Таблица oc_setting является центральным хранилищем всех конфигурационных параметров магазина OpenCart. Она содержит настройки, которые устанавливаются через административную панель, а также технические параметры системы.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
setting_id |
int |
Уникальный идентификатор настройки (первичный ключ с автоинкрементом). |
store_id |
int |
Идентификатор магазина (мультистора). Для основного магазина значение равно 0. Позволяет иметь разные настройки для разных магазинов в рамках одной установки OpenCart.
|
code |
varchar(128) |
Код группы настроек (модуля, темы и т.д.). Например: config (глобальные настройки), payment (настройки оплаты), shipping (настройки доставки), theme (настройки темы), код конкретного модуля (cart, category и др.).
|
key |
varchar(128) |
Уникальный ключ (имя) конкретной настройки. Например: config_meta_title, config_email, module_category_status, payment_cod_sort_order.
|
value |
text |
Значение настройки. Может быть строкой, числом, сериализованным массивом (для многоязычных настроек или сложных структур данных). |
serialized |
tinyint(1) |
Флаг, указывающий, что значение в поле value хранится в сериализованном виде (1). Если значение не сериализовано, флаг равен 0.
|
Как это работает
При загрузке любой страницы OpenCart система обращается к таблице oc_setting и загружает все настройки, кэшируя их для быстродействия. Глобальные настройки магазина (из раздела "Система → Настройки") имеют код config. Настройки модулей имеют код, начинающийся с module_, за которым следует системное имя модуля (например, module_category для модуля "Категории").
Поле serialized играет ключевую роль. Когда администратор сохраняет настройки, которые представляют собой массив данных (например, многоязычные заголовки или список стран для ограничения доставки), OpenCart сериализует этот массив и записывает его в поле value, одновременно устанавливая serialized в 1. При чтении настройки система проверяет этот флаг и, если он установлен, десериализует значение обратно в массив.
Поддержка мультистора через поле store_id позволяет иметь независимые конфигурации для каждого магазина в сети. Например, у каждого магазина могут быть свои контактные данные, валюта или включенные модули.
Пример SQL-запроса
Получить все глобальные настройки для основного магазина можно следующим запросом:
SELECT `key`, `value`, `serialized`
FROM oc_setting
WHERE store_id = 0 AND code = 'config';
Проверить настройки конкретного модуля (например, "Категории"):
SELECT `key`, `value`, `serialized`
FROM oc_setting
WHERE code = 'module_category';
Смотрите также
-
таблицу
oc_store,
которая содержит список магазинов (мультистора) -
таблицу
oc_module,
которая хранит информацию о позициях и экземплярах модулей -
таблицу
oc_layout,
которая определяет схему расположения модулей -
таблицу
oc_layout_route,
которая связывает макеты с определенными маршрутами