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

Таблица oc_option

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

Поля

Поле Тип данных Описание
option_id int Уникальный идентификатор опции. Первичный ключ таблицы.
type varchar(32) Тип опции, определяющий её поведение и отображение на странице. Основные типы: select (выпадающий список), radio (радио-кнопки), checkbox (чекбоксы), text (текстовое поле), textarea (текстовая область), file (файл), date, time, datetime.
sort_order int Порядок сортировки опции. Определяет последовательность отображения опций на странице товара в административной панели и на витрине.

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

Администратор магазина создает опции в разделе "Каталог → Опции". Каждая созданная опция получает запись в таблице oc_option с уникальным option_id. Поле type является критически важным, так как от него зависит логика обработки опции системой.

Для опций типов select, radio и checkbox необходимо создавать варианты выбора (значения опций). Эти значения хранятся в связанной таблице oc_option_value и связываются с опцией через поле option_id.

После создания опции её можно присвоить товарам. Связь "товар-опция" хранится в таблице oc_product_option. На витрине, на странице товара, система загружает все опции, связанные с этим товаром, и отображает их в соответствии с их типом.

Когда покупатель выбирает значение опции (например, выбирает размер из выпадающего списка) и добавляет товар в корзину, информация об выбранном значении (option_id и option_value_id или введенный текст) записывается в таблицу oc_cart, а затем переносится в заказ.

Многоязычные названия опций хранятся не в этой таблице, а в отдельной таблице oc_option_description, которая связывается по полю option_id.

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

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

SELECT o.option_id, o.type, o.sort_order, od.name, (SELECT COUNT(*) FROM oc_option_value ov WHERE ov.option_id = o.option_id) as value_count FROM oc_option o LEFT JOIN oc_option_description od ON (o.option_id = od.option_id AND od.language_id = 1) ORDER BY o.sort_order ASC;

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

  • таблицу oc_option_value,
    которая хранит значения для опций
  • таблицу oc_option_description,
    которая хранит многоязычные названия опций
  • таблицу oc_product_option,
    которая связывает опции с товарами
  • таблицу oc_product_option_value,
    которая определяет цены и наличие для значений опций у конкретных товаров
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить