このページに初めて投稿するので、あまり叩かないでください :) チェックアウト用のイベントも作りたいです。そのうちの 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 メソッドを実行していないと思いますが、オブザーバーをデバッグする方法がわかりません。