НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
4 of 152 menu

Таблица oc_category_description

Таблица oc_category_description является одной из ключевых таблиц для реализации мультиязычности в OpenCart. Она предназначена для хранения всех текстовых данных категорий (названий, описаний, мета-тегов) на разных языках, которые установлены в системе.

Поля

Поле Тип данных Описание
category_id int Идентификатор категории. Внешний ключ, который связывает описание с основной записью категории в таблице oc_category.
language_id int Идентификатор языка. Внешний ключ, который связывает описание с конкретным языком из таблицы oc_language. Для каждой категории существует столько записей в этой таблице, сколько языков установлено в магазине.
name varchar(255) Название категории на конкретном языке. Это поле является обязательным и отображается в меню, хлебных крошках и на странице самой категории.
description text Полное описание категории. Поддерживает HTML-разметку. Отображается на странице категории между заголовком и списком товаров. Может быть пустым.
meta_title varchar(255) Заголовок (тег title) для страницы категории в браузере и в результатах поисковых систем. Если не заполнен, обычно используется значение из поля name.
meta_description varchar(255) Мета-описание страницы категории. Краткое описание, которое часто отображается в сниппете под ссылкой в результатах поиска.
meta_keyword varchar(255) Мета-ключевые слова для страницы категории. В современной SEO-практике это поле имеет минимальное значение, но сохраняется для обратной совместимости.

Как это работает

При создании новой категории в админ-панели OpenCart сначала создается запись в основной таблице oc_category, где хранятся общие, не зависящие от языка данные (ID родительской категории, порядок сортировки, статус и др.). Этой записи присваивается уникальный category_id.

Затем для каждого активного языка в системе создается отдельная запись в таблице oc_category_description с этим category_id и language_id соответствующего языка. Это позволяет администратору заполнить название, описание и мета-теги категории для каждого языка магазина независимо.

Когда пользователь заходит на сайт, система определяет его язык (через настройки браузера, куки или выбор вручную) и при отображении категорий подставляет текстовые данные из oc_category_description для соответствующего language_id.

Таким образом, связка таблиц oc_category и oc_category_description является классическим примером реализации EAV (Entity-Attribute-Value) паттерна для поддержки мультиязычности, где oc_category - это сущность (Entity), а oc_category_description - её атрибуты (Attribute) на разных языках.

Пример SQL-запроса

Выбрать все русскоязычные описания категорий, отсортированные по названию, можно следующим запросом:

SELECT cd.*, c.sort_order, c.status FROM oc_category_description cd LEFT JOIN oc_category c ON (cd.category_id = c.category_id) LEFT JOIN oc_language l ON (cd.language_id = l.language_id) WHERE l.code = 'ru' ORDER BY cd.name;

Смотрите также

  • таблицу oc_category,
    которая хранит основную, не зависящую от языка информацию о категориях
  • таблицу oc_language,
    которая содержит список активных языков магазина
  • таблицу oc_product_description,
    которая по тому же принципу хранит описания товаров
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить