У меня есть тип материала Товар, к которому может подключаться несколько коммерческих продуктов, которые имеют вариации по цвету и размеру. Поле цвет имеет единственный выбор, то есть для создания товаров отличающихся по цвету нужно создавать много коммерческих продуктов, каждый из которых имеет свой единственный цвет.
Поле Размер я решил упростить для добавление товара - то есть можно в любом товаре отметить сразу несколько размеров, без необходимости добавлять вариации еще и по размеру, то есть получается типа так:
Товар женская блузка, его коммерческие продукты:
1. Синяя, размеры: 42, 46, 48
2. Черная, размеры: 40, 42, 44
3. Красная, размеры: 42, 44, 48.
Теперь задача сделать правильным выбор этих атрибутов. Для цвета мне было достаточно отметить галку
Активировать это поле как поле атрибута на форме добавления в корзину. -- и тогда появилось поле выбора при отображении товара с автоматической подгрузкой нового товара, с его фоткой и ценой, а также размерами.
А вот с размером это не получается. Если нажать это же у размера:
Активировать это поле как поле атрибута на форме добавления в корзину. -- то все равно отображается просто списком терминов без возможности выбора.
Тогда я использую Line Item по совету специалистов. Я сделал типа Line Item в котором добавил размеры.
Размеры выводятся все для всех товаров. то есть
38, 40, 42, 44, 46, 48, 50, 52... выводится радиокнопками правильно, но все подряд без учета того что в поле размер в Коммерческом продукте отмечено.
Мне нужно чтобы этот набор размеров зависел от того что отмечено в каждом Коммерческом продукте, подгружаемом динамически.
Я смог следующее:
1. написал модуль , в котором нашел как называется переменная поля Line Item размеры
<?php
/*disable attributes from node page of type product_with_attributes that are not checked*/
/*line_item_fields[field_size] should be presented with only checked items from field-available-sizes */
// size S - $node->content['field_product']['0'][]
// sizes line item - $node->content['field_product']['0']['line_item_fields']['field_size']['und']['#options']
// sizes line item - $node->content['field_product']['0']['line_item_fields']['field_size']['und']['2027']
// hide element line item size:
// $node->content['field_product']['0']['line_item_fields']['field_size']['und']['2027'] = array('#access' => FALSE);
function commerce_product_attributes_select_node_view($node, $view_mode, $langcode) {
if ($node->type=="product_with_attributes"){
if ($view_mode == 'full') {
dpm($node->content);
$node->content['field_product']['0']['line_item_fields']['field_size']['und']['2027'] = array('#access' => FALSE);
}
}
}
?>
2. научился скрывать один из элементов выбора:
$node->content['field_product']['0']['line_item_fields']['field_size']['und']['2027'] = array('#access' => FALSE);
где 2027 - это один из размеров 48.
Но если выбрать другой цвет а потом опять этот же, то эта строка сокрытия не работает, значит надо использовать динамику. то есть скрывать элементы динамичеки при подгрузке товара. КАК?
и второй вопрос, я все-таки не нашел в этой переменно $node->content где список терминов отмеченных в Коммерческом продукте в поле Размеры. собственно как это найти или придется обращаться к базам данных?
Помогите пожалуйста. нигде не видно как упростить добавление товаров отмечая сразу несколько размеров. везде предлагается делать набор товаров, то есть в данном случае вместо 3 товаров, предлагается делать 9, то есть
1. синяя блузка 42
2. синяя блузка 46,
3. синяя блузка 48
4. черная блузка 40...
а это неудобно. вот это неудобно: https://drupalcommerce.org/user-guide/product-attributes-variations
Комментарии
подскажите как решили свой вопрос?