2011-06-27 11 views
1

Magento 1.3.xで完璧に動作するMagento用の1つの無料モジュールを購入しました。Magentoのカートに無料の製品を追加する際の問題

適格なロジックが満たされたときに無料の(シンプルな)製品をカートに追加するために "Mage_Checkout_CartController"が続きます。しかし私は、基本的に

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

これは、Magentoの1.3.xの(CE)で正常に動作を使用して追加された無料のアイテムを追加するために余分なコードとロジックを拡張「CartController.php」で「indexAction()」機能を変更して、コメントを追加しています1.4と1.5では、空きアイテムがカートに追加されますが、カートの合計は更新されず、自分のコードで追加された製品が含まれています。チェックアウトすると製品が表示されません。製品が無料で、ゼロ価格が設定されているにもかかわらず、私は製品に価格、すなわち$ 1を与えると、商品がまだ認識されていないかのように、無料の製品は正しく構成されており、販売可能です。在庫などあります。

私の製品がカートに追加されていますが、Magento 1.4/1.5のシステムで何らかの理由で正しく表示されないのですか?

おかげ

PAJ

答えて

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のパラメータ&として、その製品の量を第2のパラメータとして有するアレイを選択する。

希望します。

+0

ありがとうございました $ product = Mage :: getModel( 'catalog/product') - > load($ FREEPRODUCT); と$ cart = $ this - > _ getCart(); あなたの提案では、結果はまったく同じです。商品がカートに入っていても認識されていないようです。つまり、カートに商品が5つあり、無料の商品が追加されていれば、カートの合計はまだ表示されます5.興味深いことに、カート内の無料の商品をクリックするとそれからカートに戻って、製品が認識され、カートの合計が正しいことを確認します。製品を取り外してもう一度認識されません... – paj

+1

OKカートを手動で更新すると、製品が正しく表示されるので、カートの保存/更新が正しくないように見えますか? – paj

+0

@paj - "addProduct()"メソッドが呼び出されたステートメントを更新したので、編集した答えを確認してからもう一度試してください。このアップデートされたソリューションを最初に試してみることをお勧めします。 –

0

これは、カートが正しく更新されていることを確認する必要があります。

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

を、私は私の物の後に私の拡張cartcontroller機能にこれを追加すると追加して、カートは、カートが正しく私の付加物をレンダリングし、次に保存します。

関連する問題