1

我为 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 中的系统无法正确看到的任何建议?

谢谢

帕杰

4

2 回答 2

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()”中,我特别提到了所需的产品对象(将被添加到购物车)作为第一个参数和该产品数量的数组作为第二个参数。

希望能帮助到你。

于 2011-06-27T16:36:05.507 回答
0

这应该确保购物车正确更新:

        session_write_close();
        $this->_redirect('checkout/cart');

当我在我的产品添加和购物车保存之后将此添加到我的扩展购物车控制器功能时,购物车会正确呈现我添加的产品。

于 2011-06-28T15:22:09.153 回答