Таблица oc_filter
Таблица oc_filter является основной таблицей для работы с системой фильтрации товаров в OpenCart. Она хранит как группы фильтров, так и отдельные значения фильтров, которые могут быть присвоены товарам для удобной навигации по каталогу.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
filter_id |
int |
Уникальный идентификатор фильтра. Первичный ключ таблицы. |
filter_group_id |
int |
Внешний ключ, который связывает фильтр с группой фильтров. Ссылается на таблицу oc_filter_group.
|
sort_order |
int |
Порядок сортировки фильтра внутри своей группы. Определяет последовательность отображения значений фильтра на странице. |
Как это работает
Система фильтров в OpenCart организована по принципу иерархии: Группа фильтров → Фильтры. Например, группа фильтров "Цвет" может содержать фильтры: "Красный", "Синий", "Зеленый". Группа "Размер" может содержать фильтры: "S", "M", "L".
Каждому товару в административной панели можно назначить один или несколько фильтров из различных групп. Это делается через редактирование товара в разделе "Данные" → вкладка "Связи" → блок "Фильтры".
Связь между товарами и фильтрами осуществляется через таблицу oc_product_filter, где хранятся пары product_id и filter_id.
На фронтенде, когда пользователь заходит в категорию товаров, система анализирует, какие фильтры есть у товаров в этой категории, и отображает соответствующие группы фильтров с их значениями. При выборе фильтра происходит обновление списка товаров с учетом выбранных критериев.
Многоязычные названия фильтров хранятся в отдельной таблице oc_filter_description, которая связана с oc_filter по полю filter_id.
Пример SQL-запроса
Получить все фильтры с их названиями для определенной группы можно следующим запросом:
SELECT f.filter_id, fd.name, fg.sort_order as group_order, f.sort_order
FROM oc_filter f
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)
WHERE f.filter_group_id = 3
AND fd.language_id = 1
ORDER BY f.sort_order ASC;
Смотрите также
-
таблицу
oc_filter_group,
которая хранит группы фильтров -
таблицу
oc_filter_description,
которая содержит многоязычные названия фильтров -
таблицу
oc_product_filter,
которая связывает товары с фильтрами -
таблицу
oc_category_filter,
которая определяет, какие фильтры показывать в категориях