我为Magento写了一个买一送一的模块,它在Magento 1.3.x中完美运行。
扩展“Mage_Checkout_CartController
”以在满足合格逻辑时将免费(简单)产品添加到购物车。我修改了扩展名为“indexAction()
”的“CartController.php
”函数,并添加了额外的代码和逻辑来添加基本上添加的免费项目
$cart->addProduct($FREPRODUCTID, 1);
$cart->save();
$this->_getSession()->setCartWasUpdated(true);
这在Magento 1.3.x(CE)中工作正常但是在1.4和1.5中我看到的是免费项目被添加到购物车但是购物车总数没有更新以包括我的代码添加的产品,以及在结账时,没有看到产品。虽然产品是免费的,配置零价格,但我也注意到,当我给产品一个价格,即1美元时,产品仍然显示在购物车中零价,好像它根本无法识别。免费产品配置正确,可以销售,库存等。
为什么我的产品被添加到购物车中的任何建议但是Magento 1.4 / 1.5中的系统没有正确地看到它?
由于
PAJ
答案 0 :(得分:1)
尝试使用此代码&测试一下: -
$product = Mage::getModel('catalog/product');
$product->setStoreId(Mage::app()->getStore()->getId());
$product->load($FREPRODUCTID);
$cart = Mage::getSingleton('checkout/cart');
$cart->init();
$cartItems = $cart->getQuote()->getAllItems();
$counter = 1;
$cartData = array();
if (count($cartItems)) {
foreach ($cartItems as $_eachItem) {
$cartData[$counter]['qty'] = $_eachItem->getQty();
$counter++;
}
}
$freeProductQty = 1;
$cart->addProduct($product, array('qty' => $freeProductQty, 'product' => $FREPRODUCTID));
$cartData[$counter]['qty'] = $freeProductQty;
$cartData = $cart->suggestItemsQty($cartData);
$cart->updateItems($cartData)
->save();
$this->_getSession()->setCartWasUpdated(true);
在方法“addProduct()
”中,我特别提到了所需的产品对象(将被添加到购物车中)作为第一个参数&数组,该产品的数量为第二个参数。
希望它有所帮助。
答案 1 :(得分:0)
这应确保购物车正确更新:
session_write_close();
$this->_redirect('checkout/cart');
在我的产品添加和购物车保存后,当我将此添加到我的扩展购物车控制器功能时,购物车会正确呈现我添加的产品。