Magento更新小计项目

时间:2013-05-02 20:36:40

标签: magento magento-1.7

我无法更新购物车中的小计项目。 我使用observe checkout_cart_product_add_after 创建了模块我可以从项目获得小计价格:

$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;中运行 我得到了正确的更新小计。在购物车页面中,我仍然没有更改原始小计。

编辑2 我正在尝试使用 sales_quote_collect_totals_after 事件运行modifySubtotal函数,但我在购物车页面上看不到更新的小计价格。以下来自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;

}

我会感激任何提示和帮助。

3 个答案:

答案 0 :(得分:0)

您应该观察sales_quote_collect_totals_after

答案 1 :(得分:0)

您的代码出现问题:

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

这需要

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

希望这有帮助

答案 2 :(得分:-1)

问题解决了。我覆盖并将 Subtotal.php Tax / Module / Sales / Qoute / Total 复制到/ app / local / Mage / ...在545行附近我计算了我的自定义{ {1}}值并设置$subtotal这就是全部。