Commerce 2. Пробный старт. Часть 4

Главные вкладки

Аватар пользователя Dar Dar 5 мая 2017 в 17:16

Шаг 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 реализовали типизацию товаров.

Каждый Тип товара имеет набор характеристик.
Характеристика - это свойство, характеризующее некий товар в целом. Например, "Описание". Представим себе пару туфель. Так вот описание "Удобные летние туфли" - это и есть характеристика "Описание" данного товара.

Но ведь туфли могут быть разного размера и цвета. "Размер" и "Цвет" - это атрибуты товара. Атрибуты позволяют нам различать различные вариации одного и того же товара.

Вариация товара - это очень важное понятие. Вариация позволяет нам создавать множество экземпляров одного и того же товара, различающего своими атрибутами и ценой. По сути в магазине продается не Товар, продается одна из его вариаций. Каждый товар обязан иметь хотя бы одну вариацию.

Атрибут сам по себе тоже является сущностью, имеющий, как минимум, название. Атрибут можно расширить при помощи полей. Приведу пример: Атрибут "Цвет". Названия атрибута: синий, красный, зеленый и т.д. Но при этом мы можем добавить в атрибут поле "Код цвета" и хранить в нем шестнадцатиричный код данного цвета.

Итак, подведем итог. Создание товара происходит следующим образом:

  1. Создаем Тип товара и наполняем его характеристиками.
  2. Создаем Вариацию товара и наполняем ее Атрибутами.
  3. Связываем Тип товара c Вариацией.
  4. Создаем дополнительные поля для атрибутов, при необходимости
  5. Отображение всех вышеописанных сущностей.
  6. Создаем товары и его вариации

Создание типа товара

Как я уже говорил выше, мы делаем модный бутик, значит, для начала, нам будет достаточно одного вида товара. Так и назовем его "Товар".
Переходим по адресу /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"
Атрибуты товара
Создание атрибута
Создание атрибута
Создание атрибута
Создание атрибута
Создание атрибута
Создание атрибута
Создание атрибута
Создание атрибута

Комментарии