Таблица oc_product_image
Таблица oc_product_image используется для хранения дополнительных изображений товаров. В то время как основное изображение товара хранится непосредственно в таблице oc_product в поле image, данная таблица позволяет привязать к товару произвольное количество дополнительных картинок. Эти изображения используются для создания галереи товара на странице его описания.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
product_image_id |
int |
Уникальный идентификатор записи (связки товара и изображения). Первичный ключ с автоинкрементом. |
product_id |
int |
Внешний ключ, который связывает изображение с конкретным товаром. Ссылается на поле product_id в таблице oc_product.
|
image |
varchar(255) |
Путь к файлу изображения относительно корневой папки OpenCart (например, catalog/products/iphone_1_extra.jpg). Система автоматически создает ресайзы (уменьшенные копии) этого изображения для разных целей.
|
sort_order |
int |
Порядок сортировки изображений для отображения в галерее. Изображения выводятся в порядке возрастания этого значения. Может быть отрицательным. По умолчанию обычно 0.
|
Как это работает
В административной панели OpenCart, при редактировании товара, есть раздел "Изображения" (Images). В этом разделе администратор может загрузить несколько дополнительных изображений и установить для каждого порядок сортировки.
При сохранении товара для каждой загруженной картинки создается запись в таблице oc_product_image, где product_id равен ID редактируемого товара, а в поле image записывается путь к загруженному файлу.
На фронтенде, на странице карточки товара, основное изображение выводится крупно, а дополнительные изображения из этой таблицы отображаются в виде миниатюрной галереи. При клике на миниатюру соответствующее изображение становится основным. Порядок вывода миниатюр определяется значением в поле sort_order.
Важно отметить, что физические файлы изображений хранятся в директории image/catalog/... на сервере. В таблице же хранятся только относительные пути к этим файлам.
Пример SQL-запроса
Выбрать все дополнительные изображения для товара с ID равным 42, отсортированные по порядку:
SELECT *
FROM oc_product_image
WHERE product_id = 42
ORDER BY sort_order ASC;
Получить информацию о товаре вместе с его дополнительными изображениями:
SELECT p.product_id, p.model, p.image as main_image, pi.image as additional_image, pi.sort_order
FROM oc_product p
LEFT JOIN oc_product_image pi ON (p.product_id = pi.product_id)
WHERE p.product_id = 123;
Смотрите также
-
таблицу
oc_product,
в которой хранится основная информация о товарах, включая главное изображение -
таблицу
oc_product_to_category,
которая связывает товары с категориями -
таблицу
oc_product_description,
которая хранит текстовые описания товаров на разных языках