Я не могу обновить товар промежуточного итога в корзине. Я создал модуль с наблюдать checkout_cart_product_add_after я могу получить субтотальную цена от пункта:Обновление промежуточного итога Magento
$subtotal = Mage::getSingleton('checkout/cart')->getQuote()->getSubtotal();
, но я не могу обновить это для exmaple:
$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();
EDIT
Если Я запускаю в своем Observer print_r($subtotal); exit;
Я получаю исправленное обновление промежуточного итога. На странице корзины у меня все еще есть оригинальная промежуточная сумма без изменений.
EDIT 2 Я пытаюсь запустить функцию modifySubtotal с sales_quote_collect_totals_after событий, но я не могу видеть на странице корзины обновленной субтотальной цене. Ниже код modifySubtotal от Observer.php:
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;
}
Я буду благодарен за любые советы и помощь.
Я думаю, вы могли бы использовать наблюдателя или класс перезаписи для этого. Таким образом, вы потеряете совместимость с будущими версиями и столкнетесь с некоторыми непростительными проблемами. –