xandeadx.ru Блог музицирующего веб-девелопера

Drupal → Объединение Product и Product Display в Drupal Commerce

Опубликовано в

Инструкция для тех, кто использует в коммерце схему "один product — один product display", и кто хочет объединить Product и Product Display в одну форму:

  1. Включаем модули Inline Entity Form и Commerce AutoSKU (опционально)

  2. В форме управления полями Product Display изменяем виджет поля field_products на Inline entity form - Single value:

  3. В настройках поля field_products включаем опцию Удалить зависимые товары когда родительская сущность удалена и устанавливаем значение поля Количество значений в 1:

  4. (опционально) На странице настроек Product admin/commerce/products/types/product/edit включаем опцию Автоматическая генерация SKU и заполняем шаблон генерации SKU:

После этого форма создания Product Display примет вид:

Можно немного твикнуть её следующим кодом:

/**
 * Implements hook_form_FORM_ID_alter(): product_display_node_form.
 */
function MODULENAME_form_product_display_node_form_alter(&$form, &$form_state) {
  $form['field_product']['und']['#type'] = 'container';
  $form['field_product']['und']['form']['product_details']['#type'] = 'container';
  $form['field_product']['und']['form']['commerce_price']['und'][0]['amount']['#title'] = 'Цена';
}

Profit:

Написанное актуально для Drupal Commerce 1.x
Похожие записи

Комментарии RSS

Данный модуль подходит не только для варианта "Одно отображение - один вариант", а так же для варианта "Одно отображение - несколько вариантов"

А если у меня почти противоположная задача - вынести списки продуктов в отделные вкладки по variation type, как бы Вы рекомендовали поступить?

Кстати, спасибо Вам огромное за ваш блог. Это пожалуй лучший русскоязычный ресурс по друпалу.

Обязательно ли использование AutoSKU? Если артикулы используются свои, но, при этом, "один product — один product display"...

необязательно

Александр, сб 23/11/2013 - 17:53

Field group тебе поможет

Добрый день!
А почему на 4ом скрине, у товара нет поля "title". по факту то тайтла 2а - первый у ноды второй у товара. как вы это обошли?

ответ на втором скриншоте

аа, нашел галку.

Пробовал с помощью feeds но там в настройках парсера не видно полей вставленных Inline entity form.
Подскажите пожалуйста, как при такой схеме "один product — один product display" сделать массовую загрузку товаров?

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

со схемой product display → product ничего не происходит, это по прежнему две разные сущности

xandeadx тоесть если я правильно понял, сначала надо выгрузить товар в магазин. Пример таблицы SKU;Название;цена А потом таблицу для дисплея title;SKU. Где SKU одинаковые.
Так?

А кто-нибудь подскажет, как можно добавить изображения в список товаров виджета Inline entity form - Multiple values ?

у меня сейчас так отображается http://prntscr.com/3d12kr

> Можно немного твикнуть её следующим кодом:

На commerce 1.9 не срабатывает данный код. Добавлял как положено в свой модуль. В чем может быть проблема?

Все разобрался. У меня вместо дисплей товара назывался просто product, а не product_display

А если товаров несколько?
Одно из полей товара - цвет (таксономия).
Как сделать что бы к названию товара автоматически добавлялся цвет?

Насчет твикнуть, подскажите пожалуйста, куда именно помещать код? В template.php?
На что заменить "MODULENAME" ? Прошу - расшифруйте для необразованных)

Подскажите плиз, как твикнуть форму для commerce 2.x ?

commerce 2.x не существует

Упс )) что-то у меня этот твик не работает для последней версии commerce. Вродебы все сделал по инструкции и название поля референс на товар поменял на свое, все равно не работает.

+ Твик также не работает

Commerce (commerce)
Defines features and functions common to the Commerce modules. Must be enabled to uninstall other Commerce modules.
Version: 7.x-1.11

Спасибо большое!

Вопрос:
На http://api.drupalcommerce.org/api/search/DC/form_alter
нет такого хука.
самый ближайший – ..._menu_form_node_form_alter

Подскажите как лучше организовать товары. Для каждого типа товаров DC создавать свой тип дисплея (например: сумки -> сумки, кошельки -> кошельки) или можно создать один тип дисплея (Товар) и с ним связывать все типы товаров DC (Товар - сумки, товар - кошельки)???

Скажите а как теперь можно удалить товар и дисплей одновременно?

Не могли бы вы чуть подробнее про модуль.
Как догадаться, какие переменные переопределять?
$form['field_product']['und']['#type'] = 'container';

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании