Таблица oc_filter_description
Таблица oc_filter_description является частью системы фильтрации товаров в OpenCart. Она предназначена для хранения многоязычных названий фильтров, которые создаются в административной панели и используются для фильтрации товаров в категориях.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
filter_id |
int |
Идентификатор фильтра. Внешний ключ, связывающий описание с основной записью фильтра в таблице oc_filter.
|
language_id |
int |
Идентификатор языка. Внешний ключ для таблицы oc_language. Определяет, для какого языка предназначено данное название фильтра.
|
filter_group_id |
int |
Идентификатор группы фильтров. Внешний ключ для таблицы oc_filter_group. Указывает, к какой группе принадлежит данный фильтр.
|
name |
varchar(64) |
Название фильтра на указанном языке. Именно это название видят пользователи в интерфейсе магазина при выборе фильтров. |
Как это работает
Система фильтров в OpenCart состоит из трех основных таблиц: oc_filter_group (группы фильтров), oc_filter (сами фильтры) и oc_filter_description (описания фильтров). Таблица oc_filter_description обеспечивает многоязычную поддержку названий фильтров.
При создании фильтра в административной панели (Раздел "Каталог" → "Фильтры") администратор сначала создает группу фильтров, затем добавляет в нее конкретные фильтры. Для каждого фильтра можно указать название на всех доступных в системе языках. Эти названия сохраняются в таблице oc_filter_description.
Когда покупатель заходит в категорию товаров, к которой привязаны фильтры, система обращается к таблице oc_filter_description и извлекает названия фильтров на текущем языке магазина. Это позволяет создать многоязычный интерфейс фильтрации.
Первичный ключ таблицы состоит из двух полей: filter_id и language_id. Это означает, что для одного фильтра может существовать несколько записей с названиями на разных языках, но только одна запись для каждого языка.
Пример SQL-запроса
Получить все названия фильтров на русском языке можно следующим запросом:
SELECT fd.filter_id, fd.name as filter_name, fg.name as group_name
FROM oc_filter_description fd
LEFT JOIN oc_filter_group_description fg ON (fd.filter_group_id = fg.filter_group_id AND fg.language_id = fd.language_id)
WHERE fd.language_id = 1
ORDER BY fg.name, fd.name;
Смотрите также
-
таблицу
oc_filter,
которая содержит основные данные фильтров -
таблицу
oc_filter_group,
которая хранит группы фильтров -
таблицу
oc_filter_group_description,
которая содержит описания групп фильтров -
таблицу
oc_product_filter,
которая связывает товары с фильтрами