Стажировка на реальных проектах:
наполнение портфолио, помощь с работой и заказами, пробные собеседования. Жми для подробностей→
8 of 152 menu
Бесплатный курс по Верстке. От новичка до продвинутого верстальщика! Начало 11 ноября. Жми для записи!

Таблица 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,
    которая хранит текстовые описания товаров на разных языках