2013-05-02 103 views
0

我無法更新購物車中的小計項目。 我創建了觀察checkout_cart_product_add_after模塊,我可以從項目獲取總價格:Magento更新小計項目

$subtotal = Mage::getSingleton('checkout/cart')->getQuote()->getSubtotal(); 

,但我不能更新此,對於〔實施例:

$subtotal = $subtotal + 100; 
Mage::getSingleton('checkout/session')->getQuote()->setSubtotal($subtotal); 
Mage::getSingleton('checkout/cart')->getQuote()->setSubtotal($subtotal); 
Mage::getSingleton('checkout/session')->getQuote()->save(); 
Mage::getSingleton('checkout/cart')->getQuote()->save(); 

編輯

如果我跑在我的觀察員print_r($subtotal); exit; 我得到正確更新的小計。在購物車頁面中,我仍然有原始小計而無需更改。

EDIT 2 我試圖運行modifySubtotal功能與sales_quote_collect_totals_after事件,但我不能在購物車頁面更新的總價格見。在Observer.php下面的代碼modifySubtotal:

public function modifySubtotal(Varien_Event_Observer $observer) 
    { 

    $session = Mage::getSingleton('checkout/session'); 
    $quote=$observer->getQuote(); 
    $subtotal = $quote->getBaseSubtotal(); 
    $subtotal = $subtotal +123; 
    $quote->setBaseSubtotal($subtotal); 

    $quote->save(); 
    $subtotal2 = $quote->getBaseSubtotal(); 
    //print_r($subtotal2);exit; 

} 

我會很感激任何提示和幫助。

回答

-1

問題解決。我覆蓋並複製Subtotal.php稅/模塊/銷售/ Qoute /總計到/ app/local/Mage/...在545行附近計算我的自定義$subtotal值並設置$item->setRowTotal($subtotal);這就是全部。與您的代碼

+3

我想你可以使用觀察者或重寫類來做到這一點。這樣做,你將失去與未來版本的兼容性,並可能有一些不可見的問題。 – 2014-03-14 18:52:00

0

您應該注意到sales_quote_collect_totals_after

+0

謝謝你的提示,但對我來說我還是不能在購物車中查看更新的小計。 – Krzysztof 2013-05-03 10:30:49

0

問題就在這裏:

$session = Mage::getSingleton('checkout/session'); 
$quote=$observer->getQuote(); 

這必須

$session = Mage::getSingleton('checkout/session'); 
$quote=$session->getQuote(); 

希望這有助於