Всем привет. Помогите в DC на D7 разобраться.
Имеется следующий код:
<?php
function kladr_commerce_addtocart_menu() {
$items = array();
$items['commerce/add-to-cart/%'] = array(
'title' => 'Add item to cart',
'type' => MENU_CALLBACK,
'access arguments' => array('access checkout'),
'page callback' => 'kladr_commerce_addtocart',
'page arguments' => array(2, 3),
);
return $items;
}
function
kladr_commerce_addtocart($product_id, $quantity = 1) {
// Add the product to the current users cart.
commerce_cart_product_add_by_id($product_id, $quantity);
// Go to the cart page.
drupal_goto('cart');
?>
При переходе по ссылке commerce/add-to-cart/1/2/
корзину добавляется line item с id продукта 1 и количеством 2.
Я добавил в тип продукта и line item кастомное поле field_kn и хочу, чтобы при переходе
по ссылке commerce/add-to-cart/1/2/asdf
создавался line item со значением поля field_kn ='asdf'.
Мануалы не помогли решить проблему, в интерфейсе отловил запрос, он обращается к полю line_item_fields[field_kn][und][0][value]...пытался по-разному не получается, подскажите пжл
Комментарии
<?php
'page arguments' => array(2, 3, 4),
?>
Лучше полностью задачу опишите и чего добиться хотите.
field_kn - это что?
field_kn это доп поле в типе продукта. Значение которое должно в нем сохраняться передаётся из внешней системы, каждый раз оно уникальное. Мне нужно чтобы на странице с продуктами(одного типа) по нажатию на кнопку «добавить в корзину» происходило, собственно добавление продукта в корзину с сохранением в field_kn исходного значение из внешней системы
К дополнению к аргументам выше. В коллбэке:
1. http://api.drupalhelp.net/api/commerce/modules--product--commerce_produc...
2. http://api.drupalhelp.net/api/commerce/modules--product_reference--comme...
3. http://api.drupalhelp.net/api/commerce/modules--cart--commerce_cart.modu...
Спасибо, получилось, сделал так:
<?php
function kladr_commerce_addtocart_menu() {
$items = array();
$items['commerce/add-to-cart/%'] = array(
'title' => 'Add item to cart',
'type' => MENU_CALLBACK,
'access arguments' => array('access checkout'),
'page callback' => 'kladr_commerce_addtocart1',
'page arguments' => array(2, 3, 4, 5),
);
return $items;
}
function kladr_commerce_addtocart1($product_id, $quantity = 1, $kadnum, $address) {
// Add the product to the current users cart.
$combine = TRUE;
$product = commerce_product_load($product_id);
$line_item = commerce_product_line_item_new($product, $quantity, 0, $data = array(), $line_item_type = 'product');
$line_item_wrapper = entity_metadata_wrapper('commerce_line_item', $line_item);
$line_item_wrapper->field_kn->set($kadnum);
$line_item_wrapper->field_address->set($address);
$line_item = commerce_cart_product_add($GLOBALS['user']->uid, $line_item, $combine);
// Go to the cart page.
drupal_goto('cart');
}
?>