1

私は、Magento 1.3.xで完全に機能する、Magento用の1つ購入して1つの無料モジュールを作成しました。

これは「Mage_Checkout_CartController」を拡張して、適格なロジックが満たされたときに無料の(単純な)製品をカートに追加します。indexAction()拡張された「」の「」関数を変更し、CartController.php基本的にを使用して追加される無料のアイテムを追加するための追加のコードとロジックを追加しました

$cart->addProduct($FREPRODUCTID, 1);
$cart->save();
$this->_getSession()->setCartWasUpdated(true);

これはMagento1.3.x(CE)で正常に機能しますが、1.4と1.5では無料のアイテムがカートに追加されますが、カートの合計は私のコードによって追加された製品を含むように更新されません。製品は見られません。製品は無料で、ゼロ価格が設定されていますが、製品に価格を指定すると、つまり1ドルの場合でも、単に認識されていないかのように、カートにゼロ価格で表示されます。無料の製品は正しく構成されており、在庫があるなどの販売が可能です。

私の製品がカートに追加されているのに、どういうわけかMagento 1.4 / 1.5のシステムで正しく表示されていない理由についての提案はありますか?

ありがとう

PAJ

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()」では、必要な商品オブジェクト (カートに追加される) を最初のパラメーターとして指定し、その商品の数量を含む配列を 2 番目のパラメーターとして指定しました。

それが役に立てば幸い。

于 2011-06-27T16:36:05.507 に答える
0

これにより、カートが適切に更新されていることが確認されます。

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

製品を追加してカートを保存した後にこれを拡張されたカートコントローラ関数に追加すると、カートは追加した製品を正しくレンダリングします。

于 2011-06-28T15:22:09.153 に答える