你已经确认观察者被击中了?确保您触发的事件具有该事件的唯一名称。例如,在以下代码中,名称“catalog_product_set_price”对于“catalog_product_load_after”事件必须是唯一的。我假设你正在进入观察者,但以防万一。如果您将一堆新模块添加到实例中,则可能会出现这种风险。
<catalog_product_load_after>
<observers>
<catalog_product_set_price>
<type>singleton</type>
<class>NamespaceModule_Model_Observer</class>
<method>set_price2</method>
</catalog_product_set_price>
</observers>
</catalog_product_load_after>
您可以使用以下数组来检查您的位置:
$currentPageArray = array(
'request_string'=> Mage::app()->getFrontController()->getRequest()->getRequestString(),
'uri' => Mage::app()->getFrontController()->getRequest()->getRequestUri(),
'route' => Mage::app()->getFrontController()->getRequest()->getRouteName(),
'action' => Mage::app()->getFrontController()->getRequest()->getActionName(),
'controller' => Mage::app()->getFrontController()->getRequest()->getControllerName()
);
它将输出如下内容:
Array
(
[request_string] => /some-category/some-product-page-url.html
[uri] => /catalog/product/view/id/64806/category/17
[route] => catalog
[action] => view
[controller] => product
)
你可以试试不同的观察者。
- controller_action_layout_render_before_catalog_product_view
- controller_action_postdispatch_catalog_product_view