阻止Observer被调用两次

时间:2017-09-18 08:53:46

标签: magento magento-1.9

我有一个观察者会触发catalog_controller_product_view事件。它工作正常,但是当我将产品添加到购物车时,Magento会生成另一个事件,然后重定向回产品视图,然后再次调用我的观察者。

我想阻止这种行为。我尝试在第一个产品视图和从购物车重定向后记录整个$observer对象,但它们完全相同。 任何想法,如何防止Observer在此事件上被调用两次?

P.S。我正在使用Magento 1.9.2

1 个答案:

答案 0 :(得分:0)

我不确定我的解决方法有多好,但它确实有用。

$coreSession = Mage::getSingleton('core/session');
if ($event_name == 'catalog_controller_product_view' && $coreSession->getData("test") == 1){
        $coreSession->setData("test", 0);
        return;
    }
// view
if ($event_name == 'catalog_controller_product_view'){
        $coreSession->setData("test", 0);
        // Do stuff
    }
// add_to_cart 
elseif ($event_name == 'checkout_cart_add_product_complete'){
        $coreSession->setData("test", 1);
        // Do stuff
    }