Мне нужно при добавлении товара добавлять в корзину ещё другой товар
Использую препроцессор
<?phpuc_cart_add_item?>
В нём код
<?php $item_entity = entity_create('uc_cart_item', array(
'cart_id' => $cid,
'nid' => 1200,
'qty' => 1,
//'data' => $data,
));?>
Работает, однако каждый раз добавляемый сверху товар создаётся как отдельная запись в таблице, то бишь вместо +1 к кол-ву товара в корзине появляется такой же с количеством 1 и даже нажатие на кнопку удаления не помогает. Фатальный малось вышел эксперимент.
Комментарии
Надо немного выше по коду взять , так как Вы вписались после проверки уникальности позиции в корзине.
Запоздало, но вот рабочее решение. us_add_cart даже с параметров отключения редиректа почему-то срабатывало дважды, а такой вариант всегда норм работает.
<?php
// If the item isn't in the cart yet, add it.
$dataNode = Array( 'attributes' => Array (), 'shippable' => 0, 'type' => 'product', 'module' => 'uc_product' );
//$dataNode = Array( 'attributes' => Array ( '8' => 17 ), 'shippable' => 0, 'type' => 'product', 'module' => 'uc_product' );
$qtyNode = $qty;
$efq = new EntityFieldQuery();
$result = $efq->entityCondition('entity_type', 'uc_cart_item')
->propertyCondition('cart_id', $cid)
->propertyCondition('nid', $nidNode)
->propertyCondition('data', serialize($dataNode))
->execute();
if (empty($result['uc_cart_item'])) {
$item_entity = entity_create('uc_cart_item', array(
'cart_id' => $cid,
'nid' => $nidNode,
'qty' => $qtyNode,
'data' => $dataNode,
));
entity_save('uc_cart_item', $item_entity);
echo 666;
}
else
{
$item_entity = entity_load_single('uc_cart_item', current(array_keys($result['uc_cart_item'])));
$qtyNode = $item_entity->qty + $qtyX;
module_invoke($data['module'], 'uc_update_cart_item', $nidNode, $dataNode, min($qtyNode, 999999), $cid);
echo 55;
};
?>