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