Таблица oc_product_description
Таблица oc_product_description является одной из ключевых таблиц в OpenCart, предназначенной для хранения всех локализуемых текстовых данных товара. Каждая запись в этой таблице соответствует описанию конкретного товара на определенном языке.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
product_id |
int |
Уникальный идентификатор товара. Внешний ключ, который связывает описание с основной записью о товаре в таблице oc_product. Вместе с language_id образует составной первичный ключ.
|
language_id |
int |
Идентификатор языка. Внешний ключ для таблицы oc_language. Определяет, для какого языка предназначено данное описание.
|
name |
varchar(255) |
Название товара на указанном языке. Это обязательное поле, которое отображается в витрине магазина, в хлебных крошках и заголовках страниц. |
description |
text |
Полное описание товара. Поддерживает HTML-разметку для форматирования текста, добавления изображений, списков и ссылок. Отображается на странице товара. |
tag |
text |
Теги (метки) товара. Используются для внутренней перелинковки и улучшения навигации. Теги разделяются запятыми. |
meta_title |
varchar(255) |
Заголовок (Title) для мета-тега title страницы товара. Важен для SEO. Если не заполнен, обычно используется значение из поля name.
|
meta_description |
varchar(255) |
Описание (Description) для мета-тега. Краткое описание страницы, которое может отображаться в результатах поиска. |
meta_keyword |
varchar(255) |
Ключевые слова (Keywords) для мета-тега. Список ключевых слов, релевантных товару, разделенных запятыми. В современном SEO имеет меньший вес. |
Как это работает
При создании товара в админ-панели OpenCart сначала создается запись в таблице oc_product, где хранятся числовые данные (цена, количество, статус). После этого для каждого активного языка магазина создается соответствующая запись в таблице oc_product_description с переводом текстовых полей.
Когда покупатель заходит на страницу товара, система определяет его язык (на основе настроек браузера или выбора языка на сайте) и загружает из oc_product_description запись, где product_id равен ID текущего товара, а language_id соответствует ID выбранного языка.
Такая структура (разделение нетекстовых и текстовых данных) является стандартным подходом для реализации мультиязычности в OpenCart и позволяет легко добавлять поддержку новых языков без изменения структуры основных таблиц.
Пример SQL-запроса
Выбрать названия и описания товара на всех языках можно следующим запросом:
SELECT pd.*, l.name as language_name, l.code as language_code
FROM oc_product_description pd
LEFT JOIN oc_language l ON (pd.language_id = l.language_id)
WHERE pd.product_id = 42
ORDER BY l.sort_order;
Смотрите также
-
таблицу
oc_product,
которая содержит основные нетекстовые данные товара -
таблицу
oc_language,
которая хранит список доступных языков -
таблицу
oc_category_description,
которая имеет схожую структуру для описаний категорий -
таблицу
oc_product_to_store,
которая определяет, в каких магазинах мультимагазинной системы доступен товар