Таблица oc_category_to_store
Таблица oc_category_to_store является ключевым элементом мультимагазинной (multistore) функциональности OpenCart. Она определяет, в каких магазинах доступна та или иная категория товаров.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
category_id |
int |
Идентификатор категории. Внешний ключ, ссылается на таблицу oc_category.
|
store_id |
int |
Идентификатор магазина. Внешний ключ, ссылается на таблицу oc_store.
|
Как это работает
Каждая запись в таблице представляет собой связь "многие ко многим" между категориями и магазинами. Если категория должна отображаться в определенном магазине, в эту таблицу добавляется соответствующая пара category_id - store_id.
По умолчанию, при создании новой категории в админ-панели OpenCart, она автоматически связывается со всеми существующими магазинами. Это означает, что для каждой категории создаются записи в oc_category_to_store для каждого store_id.
В настройках категории (вкладка "Магазины") администратор может выбрать, в каких именно магазинах должна отображаться данная категория. При сохранении изменений система обновляет записи в таблице oc_category_to_store.
При отображении каталога на фронтенде система проверяет текущий магазин (определяется по домену или другим настройкам) и выбирает только те категории, которые связаны с этим магазином через таблицу oc_category_to_store.
Пример SQL-запроса
Получить все категории, доступные в магазине с ID = 1:
SELECT c.*
FROM oc_category c
INNER JOIN oc_category_to_store c2s ON (c.category_id = c2s.category_id)
WHERE c2s.store_id = 1
AND c.status = 1
ORDER BY c.sort_order, c.category_id;
Проверить, в каких магазинах доступна категория с ID = 25:
SELECT s.*
FROM oc_store s
INNER JOIN oc_category_to_store c2s ON (s.store_id = c2s.store_id)
WHERE c2s.category_id = 25;
Смотрите также
-
таблицу
oc_category,
которая хранит основную информацию о категориях -
таблицу
oc_store,
которая содержит данные о магазинах -
таблицу
oc_product_to_store,
которая выполняет аналогичную функцию для товаров