Таблица oc_product_to_store
Таблица oc_product_to_store является ключевым элементом мультимагазинной функциональности OpenCart. Она определяет, в каких магазинах доступен каждый конкретный товар.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
product_id |
int |
Идентификатор товара. Внешний ключ, ссылается на таблицу oc_product.
|
store_id |
int |
Идентификатор магазина. Внешний ключ, ссылается на таблицу oc_store. Значение 0 соответствует основному магазину по умолчанию.
|
Как это работает
При создании нового товара в админ-панели OpenCart в разделе "Данные" есть вкладка "Связи с магазинами", где можно выбрать, в каких магазинах будет отображаться данный товар. Каждый выбранный магазин создает отдельную запись в таблице oc_product_to_store.
Если товар должен быть доступен во всех магазинах, обычно устанавливается галочка только для основного магазина (Store Default). Однако это поведение может зависеть от конкретной версии OpenCart и настроек.
При отображении каталога товаров на фронтенде система проверяет текущий магазин (определяется по домену или другим настройкам мультимагазиности) и выбирает только те товары, которые связаны с этим магазином через таблицу oc_product_to_store.
Важно отметить, что если для товара не создано ни одной записи в этой таблице, он не будет отображаться ни в одном магазине, даже если все его другие настройки корректны.
Пример SQL-запроса
Получить все товары, доступные в конкретном магазине:
SELECT p.*
FROM oc_product p
INNER JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id)
WHERE p2s.store_id = 1
AND p.status = 1;
Проверить, в каких магазинах доступен конкретный товар:
SELECT s.name as store_name
FROM oc_product_to_store p2s
LEFT JOIN oc_store s ON (p2s.store_id = s.store_id)
WHERE p2s.product_id = 42;
Смотрите также
-
таблицу
oc_product,
которая содержит основную информацию о товарах -
таблицу
oc_store,
которая хранит информацию о магазинах -
таблицу
oc_product_to_category,
которая связывает товары с категориями