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

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

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

Инструкция для тех, кто использует в коммерце схему "один 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
Похожие записи

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

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

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

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

Александр, сб 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';

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

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

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

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

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

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

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

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