Таблица oc_category
Таблица oc_category является центральной для организации древовидной структуры категорий товаров в интернет-магазине. Каждая категория может иметь родительскую категорию, что позволяет создавать многоуровневые каталоги.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
category_id |
int |
Уникальный идентификатор категории. Автоинкрементное поле. |
image |
varchar(255) |
Путь к изображению категории относительно директории image/catalog/.
|
parent_id |
int |
Идентификатор родительской категории. Для корневых категорий значение равно 0.
|
top |
tinyint(1) |
Флаг, указывающий, показывать ли категорию в главном меню сайта (1 - да, 0 - нет).
|
column |
int |
Количество столбцов для отображения подкатегорий в главном меню. |
sort_order |
int |
Порядок сортировки категории внутри родительской категории. Меньшие значения выводятся первыми. |
status |
tinyint(1) |
Статус категории: 1 - включена, 0 - отключена.
|
date_added |
datetime |
Дата и время добавления категории. |
date_modified |
datetime |
Дата и время последнего изменения категории. |
Как это работает
Таблица oc_category хранит только основные технические данные категорий. Многоязычные названия, описания и мета-теги хранятся в связанной таблице oc_category_description, которая связывается по полю category_id.
Поле parent_id реализует иерархическую структуру "родитель-потомок". Категория с parent_id = 0 является корневой. Для построения дерева категорий используется рекурсивный алгоритм, который собирает все дочерние элементы для каждого родителя.
Связь категорий с товарами осуществляется через таблицу oc_product_to_category, где каждый товар может быть привязан к нескольким категориям.
Поле top определяет, будет ли категория отображаться в горизонтальном главном меню сайта. Поле column задает количество колонок для отображения дочерних категорий в выпадающем меню.
Пример SQL-запроса
Получить полную информацию о категориях с их названиями можно следующим запросом:
SELECT c.*, cd.name, cd.description, cd.meta_title, cd.meta_description, cd.meta_keyword
FROM oc_category c
LEFT JOIN oc_category_description cd ON (c.category_id = cd.category_id)
WHERE cd.language_id = 1
ORDER BY c.parent_id, c.sort_order;
Смотрите также
-
таблицу
oc_category_description,
которая хранит многоязычные описания категорий -
таблицу
oc_category_to_store,
которая связывает категории с магазинами -
таблицу
oc_category_path,
которая оптимизирует работу с иерархией категорий -
таблицу
oc_product_to_category,
которая связывает товары с категориями