Вы здесь

Как организовать много товаров ко многим дисплеям?

0

Могу я сделать отношение в commerce многие ко многим? примерно так:

  1. Варианты товаров (допустим 3) сделать с помощью product
  2. Сделать кучу Product Display и в каждый добавить ссылки на используемые в этом Дисплее варианты (product из п.1). Их в каждом может быть несколько.

Практически такое сделать можно, но при добавлении товара, добавляется столько cart lines, сколько дисплеев, в которых есть этот product.
Или такое лучше с Commerce Product Option and Commerce Product Attributes делать?

Версия Drupal: 
7.x
Связанные проекты: 
Drupal Commerce
Вопрос задан 03.01.2017 - 03:44

Ответы

0

Сделайте $product_display->field_product многозначным, после этого сможете добавлять в дисплеи несколько товаров.

Ответ дан 03.01.2017 - 12:58
Аватар пользователя xandeadx
xandeadx
1442

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

У меня была такая задумка:

  1. создать три товара для каждого размера.
  2. в дисплее установить многозначное поле-ссылку на товар.
  3. в каждую новую ноду ставить эти три товара.

вроде бы работает. НО при добавлении в корзину двух товаров (node) с одним размером считает, что это товар тот же самый (что, на самом деле правда :)).

Решил что так не получиться сделать, и стал делать через Commerce Pricing Attributes. Но это модуль не DC-way, и если есть другой, более правильный способ - то буду рад услышать.

Комментарий оставлен 03.01.2017 - 17:06

отключите группировку товаров в настройке форматтера

Комментарий оставлен 03.01.2017 - 17:07

ищите причину, такого быть не должно

Комментарий оставлен 03.01.2017 - 19:17

Там в корзину добавляют таким кодом.

$line_item = commerce_product_line_item_new($paint, $quantity, 0, $data, $type);

  $line_wrapper = entity_metadata_wrapper('commerce_line_item', $line_item);

  $line_wrapper->field_precalculated_price->set($price);
  $line_wrapper->field_paint_size->set($paint_size);
  $line_wrapper->field_paint_frame->set($paint_frame);

  $line_wrapper->save();

  $line_item = commerce_cart_product_add($uid, $line_item, FALSE);

Но все же, склоняюсь, что решение с несколькими товарами, не правильное, т.к. в товаре нужна только цена. Вся другая информация (название, картинка, год выпуска, автор и прочее) меняется в дисплее. Как идентифицировать, что человек заказал? В общем уже настроил с помощью Pricing Attributes и почти все работает как надо. ))

@xandeadx, спасибо за помощь.

Комментарий оставлен 03.01.2017 - 20:35

Добавление одного товара создает еще 18 копий (именно столько нод, в которых добавлен этот товар)
(http://i.imgur.com/9rgOpH2.jpg)

Комментарий оставлен 03.01.2017 - 20:37