2

这是我在此页面上的第一篇文章,所以请不要打我太多:) 我想要结帐的活动太多。其中一个工作正常,但另一个没有。我不知道我的代码有什么问题。请帮忙。

事件 checkout_cart_product_add_after - 效果很好,但 checkout_cart_update_items_after - 不起作用。

配置文件

<events>
        <checkout_cart_product_add_after>
            <observers>
                <tim_checkout_model_observer>
                    <type>singleton</type>
                    <class>Tim_Checkout_Model_Observer</class>
                    <method>applyTotalPrice</method>
                </tim_checkout_model_observer>
            </observers>
        </checkout_cart_product_add_after>
        <checkout_cart_update_items_after>
            <observers>
                <tim_checkout_model_observer>
                    <type>singleton</type>
                    <class>Tim_Checkout_Model_Observer</class>
                    <method>applyTotalPrices</method>
                </tim_checkout_model_observer>
            </observers>
        </checkout_cart_update_items_after>
    </events>

Tim_Checkout_Model_Observer

public function applyTotalPrice(Varien_Event_Observer $observer)
{
    $item = $observer->getQuoteItem();
    if ($item->getParentItem()) {
        $item = $item->getParentItem();
    }
    if(Mage::helper('checkout/calculator')->isBarrelProduct($item->getProduct())){
        $specialPrice = Mage::helper('checkout/calculator')->getProductWorth($item->getProduct());
        if ($specialPrice > 0) {
            $item->setCustomPrice($specialPrice);
            $item->setOriginalCustomPrice($specialPrice);
            $item->getProduct()->setIsSuperMode(true);
        }
    }

}

public function applyTotalPrices(Varien_Event_Observer $observer)
{

    foreach ($observer->getCart()->getQuote()->getAllVisibleItems() as $item) {
        if ($item->getParentItem()) {
            $item = $item->getParentItem();
        }
        if(Mage::helper('checkout/calculator')->isBarrelProduct($item->getProduct())){
            $specialPrice = Mage::helper('checkout/calculator')->getProductWorth($item->getProduct());
            if ($specialPrice > 0) {
                $item->setCustomPrice($specialPrice);
                $item->setOriginalCustomPrice($specialPrice);
                $item->getProduct()->setIsSuperMode(true);
            }
        }
    }
}

我认为没有运行 applyTotalPrices 方法,但我不知道如何调试观察者?

4

1 回答 1

0

首先,我会在观察者的开头放置一个 Mage::log() 来检查函数是否在事件发生时运行

于 2013-09-26T22:24:57.010 回答