2

このページに初めて投稿するので、あまり叩かないでください :) チェックアウト用のイベントも作りたいです。そのうちの 1 つは問題なく動作しますが、他は動作しません。コードの何が問題なのかわかりません。助けてください。

イベント checkout_cart_product_add_after - 正常に動作しますが、checkout_cart_update_items_after - は動作しません。

config.xml

<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