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

19.10.2013

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

  1. Включаем модуль Inline Entity Form

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

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

После этого форма создания 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
Похожие записи

Комментарии

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

Александр
23.11.2013, 17:53

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

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

Дерек
11.03.2014, 14:59

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

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

Дмитрий
17.04.2014, 19:31

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

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

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

Кирилл
24.04.2014, 21:38

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

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

Александр
22.05.2014, 17:17

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

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

Александр
22.05.2014, 18:08

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

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

Павел
24.01.2015, 14:52

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

Сергей
19.03.2015, 17:29

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

Сергей
20.03.2015, 00:58

Упс )) что-то у меня этот твик не работает для последней версии 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

Алексей
04.09.2015, 17:52

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

Гость
30.12.2015, 10:51

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

Михаил
22.04.2016, 10:19

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

у меня почему-то подставляется всегда product с меньшим ID. И изменения в форме создания ноды (Product Dispaly) только меняют товар http://i.imgur.com/TO83Aq8.jpg

как добиться, чтобы при создании ноды создавался новый product, а не использовался существующий?

А с таксономией это сработает, допустим, есть словарик с категориями. В Товар добавляем ссылку на термин. Она так же добавится в дисплей?

Виджет Inline Entity Form выводит всю форму дочерней сущности, поэтому работать будет с любыми полями.

Добавить комментарий