Commerce

Матеріал з Wiki.Zina
Перейти до навігації Перейти до пошуку

Настройка интернет-магазина в Drupal

[ред. | ред. код]

На основе модуля Drupal Commerce.

Минимальный набор модулей

[ред. | ред. код]

Модуль Drupal Commerce содержит 21 модуль. Это много, особенно с учетом того, что и для самого Commerce, и для удобной работы с ним понадобится устанавливать дополнительные модули.

Для начала установим минимально возможную конфигурацию, которая позволит публиковать на сайте товары, добавлять товары в корзину и оформлять заказы.

Скачать модули:

 drush dl commerce rules addressfield inline_entity_form commerce_autosku commerce_product_clone

Установить обязательные модули (12 модулей Commerce и 4 дополнительных модуля):

 drush -y en commerce list entity_token rules addressfield commerce_ui commerce_product commerce_product_ui commerce_price commerce_cart commerce_product_reference commerce_product_pricing commerce_line_item commerce_customer commerce_order commerce_checkout

Модули для более удобной работы (необязательные):

 drush -y en commerce_autosku

— автоматическое заполнение поля «Артикул товара». Нужен для магазинов с небольшим количеством товаров, у которых нет привязки к артикулами.

 drush -y en inline_entity_form

— модуль для настройки автоматического связывания товара и карточки товара.

 drush -y en commerce_product_clone

— клонирование товара, для быстрого добавления однотипных товаров.

Товар — тип материала «Product»

[ред. | ред. код]

Сущность *Товар* создается автоматически при установке модулей *Commerce*. Она находится отдельно от типов материалов: Магазин → Товары → Типы товаров (/admin/commerce/products/types), но редактируется аналогично типам материалов — можно добавлять поля и т.п.

По умолчанию в Товаре нет поля изображения. Добавим его.

Изображение товара

[ред. | ред. код]

Настроим поле изображения так, чтобы файлы изображений товаров складывались в папку sites/default/files/product и переименовывались в транслитерированное название товара с добавлением униального ID файла.

Магазин → Товары → Типы товаров → Товар → Управление полями (/admin/commerce/products/types/product/fields) — Добавить новое поле:

  • Метка: Изображение товара
  • Машинное имя: product_image (полностью будет «field_product_image»)
  • Тип поля: Изображение
  • Виджет: Мультизагрузка

[ Сохранить ]

[ Сохранить настройки поля ]

  • Настройки Товар → Файл (Поле) Настройка пути
    • Путь к файлу: product
    • Имя файла: [commerce-product:title]-[file:fid].[file:ffp-extension-original]
    • Имя файла options:
      • [✓] Очистка, используя Pathauto
      • [✓] Транслитерировать
    • Настройки поля Изображение → Количество значений: Unlimited

[ Сохранить настройки ]

[ВРУЧНУЮ] Автоматическая генерация артикула — AutoSKU

[ред. | ред. код]

У каждого товара обязательно должен быть уникальный артикул (SKU).

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

Для небольших магазинов, торгующих единицами или десятками товаров, а не сотнями и тысячами, необходимость привязки к артикулу может быть лишнией и утомительной.

Поэтому для небольших магазинов можно включить автоматическое заполнение поля SKU сгенерированным по определенным правлам значением.

 drush -y en autosku_status

Настройка модуля здесь:

Магазин → Товары → Типы товаров → Товар (/admin/commerce/products/types/product)

  • [✓] Автоматическая генерация SKU
  • Шаблон артикула: [commerce-product:title]

Замечание: если использовать шаблон [commerce-product:product-id], то при создании нового товара, он (товар) будет сохранён дважды (точнее, сначала создан, а потом пересохранён), что может привести к неожиданным последствиям, если в Rules на это событие стоит правило.

Карточка товара — тип материала «Product Display»

[ред. | ред. код]

Карточка товара — это страница, на которой показывается товар.

Drupal Commerce так устроен, что товар на сайт нужно добавлять два раза:

  • сначала добавляется собственно товар (с артикулом, ценой, изображениями),
  • затем добавляется карточка товара, на которой может быть собрано несколько товаров с разными параметрами.

Например, одна карточка товара «Футболка» может содержать в себе несколько товаров — футболок, отличающиеся цветом и размером. При этом у них может быть разная цена и при выборе на карточке товара другого размера цена будет автоматически меняться.

Другими словами, товар — это фактическая единица товара, которая лежит на складе и имеет уникальный артикул, характеристики и цену, а карточка товара — это удобная группировка товаров.

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

Это удобно для покупателя, но владельцу магазина приходится настраивать каждый товар в двух местах.

Для крупных магазинов это решается массовой загрузкой товаров и другими способами автоматизации.

А для небольших магазинов можно пренебречь этим разделением и считать, что каждый товар одновременно является карточкой товара.

Создание карточки товара

[ред. | ред. код]

Структура → Типы материалов → Добавить тип материала (/admin/structure/types/add)

  • Имя: Карточка товара
  • Машинное имя: product_display
  • Настройки формы → Название поля заголовка: Название товара

[ Сохранить и добавить поля ]

Поле категории каталога

[ред. | ред. код]

Добавить в тип материала поле выбора категории каталога: Управление → Структура → Типы материалов → Управление полями (/admin/structure/types/manage/product-display/fields):

  • Метка: Каталог
  • Машинное имя: catalog (полностью *field_catalog*)
  • Тип поля: Ссылка на термин
  • Виджет: Выбор из списка

[ Сохранить ]

  • Настройки поля: Словарь Каталог

[ Сохранить настройки поля ]

Объединение товара и карточки товара

[ред. | ред. код]

Добавить новое поле:

  • Метка: Ссылка на товар
  • Машинное имя: product_link
  • Тип поля: Ссылка на товар
  • Виджет: Inline entity form - Single value

Этот виджет будет обеспечивать связь карточки товара с единственным товаром.

[ Сохранить ]

[ Сохранить настройки поля ]

  • Настройки Страница → Встроенная Форма Сущности: Commerce Товар
    • [✓] Удалить зависимые товары когда родительская сущность удалена.
    • [✓] Автоматическое создание заголовка товара
  • Настройки поля Ссылка на товар → Количество значений: 1

Теперь для размещения товаров можно просто добавлять карточки товара: Содержимое → Добавить содержимое → Карточка товара (/node/add/product-display)

В форме карточки товара будут отображаться поля товара и отпадает необходимость добавлять товары отдельно.

А если потребуется вернуть возможность группировки в одной карточке товара нескольких товаров с разными атрибутами, то достаточно поменять в карточке товара (/admin/structure/types/manage/product_display/fields) тип виджета вместо «Inline entity form - Single value».

Также можно поэксперементировать с разными вариантами этого виджета. Например, если поставить «Inline entity form - Multiple value», то можно прямо в карточке товара добавлять не один, а несколько товаров. Если поставить «Автодополняемое текстовое поле», то можно будет искать по названиям товаров.

Для темизации объединенной карточки товара можно воспользоваться модулем Tiunhelper. Если не работает, то см. документацию Режим разработчика Drupal (DeveloperMode.html)

Также в карточку товара нужно добавить поле типа «Ссылка на термин» — чтобы отмечать, в какую категорию входит товар. Подробнее см. Создание каталога в Drupal (Catalog.html).

Вход в личный кабинет — блок «User menu»

[ред. | ред. код]

В Drupal по умолчанию есть блок «User menu» (Структура → Меню → User menu (/admin/structure/menu/manage/user-menu) с двумя ссылками:

  • Моя учётная запись (только для авторизовавшихся пользователей)
  • Выйти

Обе эти ссылки показываются только авторизованному пользователю.

Чтобы дать возможность покупателям магазина заходить в свой кабинет или регистрироваться, достаточно добавить в это меню новый пункт:

[ Добавить ссылку (/admin/structure/menu/manage/user-menu/add) ]

  • Название ссылки меню: Вход в личный кабинет
  • Путь: user/login

[ Сохранить ]

Каталог товаров

[ред. | ред. код]

Каталог товаров делается из таких составляющих:

  • меню «Каталог»
  • словарь таксономии «Каталог» (страницы каталога будут терминами словаря таксономии)
  • связывание меню со словарем таксономии с помощью модуля taxonomy_menu
  • блок меню «Каталог»
  • представлений (views) для вывода на страницах таксономии:
    • карточек товаров, относящихся к текущей категории каталога (к текущему термину словаря таксономии)
    • списка подкатегорий каталога (вложенных терминов)
  • связывания страниц таксономии с представлениями с помощью модуля taxonomy_display.

В результате получается довольно сложная, но очень гибкая и удобная в работе конструкция.

Для быстрого добавления или редактирования категорий каталога (терминов таксономии) используем модуль taxonomy_manager. Благодаря ему можно загрузить большую древовидную структуру каталога одним списком.

А размещение блоков на страницах каталога можно наглядно редактировать с помощью панелей.

Эта схема годится не только для интернет-магазина, но и для любого каталога в принципе. Поэтому она описывается на отдельной странице: Создание каталога в Drupal (Catalog.html)