Шаг 5. Товары
Небольшое отступление
Неожиданно обнаружил, что вышла новая версия Drupal - 8.3.2.
Обновляемся:
composer update drush/drush --with-dependencies
composer update drupal/core --with-dependencies
composer update --with-dependencies
Отчет о состоянии показал, что необходимо обновить схему базы данных. Обновляем схему:
drush updb
The following updates are pending:
profile module :
8001 - Uninstalls the langcode field from the profile entity.
Do you wish to run all pending updates? (y/n): y
Performing profile_update_8001 [ok]
Cache rebuild complete. [ok]
Finished performing updates.
Вроде ничего не сломалось. В журнале нет сведений об ошибках. Продолжаем.
Итак, у нас есть валюта и есть магазин, предназначенный для расчетов в данной валюте. Пора наполнить магазин товарами.
Как утверждает официальная документация Commerce, товары могут одновременно использоваться несколькими магазинами.
Архитектура товара
Все начинается с Типа товара. В магазине может быть множество типов товаров (Автомобили, одежда, космические корабли...), а можно обойтись и одним. Основное назначение Типа товара - предоставить возможность создавать различный по содержанию контент для различных типов товаров.
Поясню, для одежды нужны такие характеристики как размер, цвет, а для автомобиля - объем двигателя, размер колес. Чтобы не смешивать все эти понятия в одну кучу разработчики Commerceреализовали типизацию товаров.
Каждый Тип товараимеет набор характеристик.
Характеристика - это свойство, характеризующее некий товар в целом. Например, "Описание". Представим себе пару туфель. Так вот описание "Удобные летние туфли" - это и есть характеристика"Описание"данного товара.
Но ведь туфли могут быть разного размера и цвета. "Размер"и "Цвет" - это атрибутытовара. Атрибутыпозволяют нам различать различные вариацииодного и того же товара.
Вариация товара - это очень важное понятие. Вариацияпозволяет нам создавать множество экземпляров одного и того же товара, различающего своими атрибутами и ценой. По сути в магазине продается не Товар, продается одна из его вариаций. Каждый товар обязан иметь хотя бы одну вариацию.
Атрибутсам по себе тоже является сущностью, имеющий, как минимум, название. Атрибутможно расширить при помощи полей. Приведу пример: Атрибут"Цвет". Названия атрибута: синий, красный, зеленый и т.д. Но при этом мы можем добавить в атрибутполе "Код цвета"и хранить в нем шестнадцатиричный код данного цвета.
Итак, подведем итог. Создание товара происходит следующим образом:
- Создаем Тип товараи наполняем его характеристиками.
- Создаем Вариацию товараи наполняем ее Атрибутами.
- Связываем Тип товара c Вариацией.
- Создаем дополнительные поля для атрибутов, при необходимости
- Отображение всех вышеописанных сущностей.
- Создаем товары и его вариации
Создание типа товара
Как я уже говорил выше, мы делаем модный бутик, значит, для начала, нам будет достаточно одного вида товара. Так и назовем его "Товар".
Переходим по адресу /admin/commerce/config/product-types"Commerce -> Конфигурация -> Product types"и видим, что Commerceуже создал для нас первый тип товара под названием Default. Переименуем его в Товар
![Типы товаров]()
Создание вариации товара
Переходим по адресу /admin/commerce/config/product-variation-types"Commerce -> Конфигурация -> Product variation types"и видим, что Commerceуже создал для нас вариацию товара под названием Default. Переименуем его в Вариация товара
![Вариации товаров]()
Создание атрибута товара
Создадим первый атрибут товара - "Цвет".
Переходим по адресу /admin/commerce/product-attributes"Commerce -> Product attributes"
![Атрибуты товара]()
![Создание атрибута]()
![Создание атрибута]()
![Создание атрибута]()
![Создание атрибута]()
![Создание атрибута]()
![Создание атрибута]()
![Создание атрибута]()
![Создание атрибута]()