在观察者文件上,我需要检测加载的页面是否对应于产品。我一直在使用与checked answer on this question上使用的方法类似的方法
if (!(Mage::registry('current_product'))) return;但到目前为止,我们只是在开发上进行测试。从今天开始,我们将在预生产服务器上进行测试,其中包含许多模块和插件。到目前为止,它工作得很好,但现在它不能工作,它不能检测何时加载产品页面。我认为是与网址重写有关,以显示一个更“友好”的网址,但无法检测到如何解决它。我看了一下Alan Storm tutorial In Depth Magento Dispatch,但我仍然可以找到哪里出了问题,或者我需要修改什么。
有什么想法吗?或者其他一些关于如何检测何时加载产品页面的解决方案?
发布于 2013-01-15 23:47:06
你已经确认观察者被击中了?确保您正在触发的事件具有该事件的唯一名称。例如,在下面的代码中,对于"catalog_product_load_after“事件,名称"catalog_product_set_price”必须是唯一的。我猜你已经进入观察者号了,但以防万一。如果您向一个实例中添加了一堆新模块,则可能会出现这种风险。
<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
)您可以尝试不同的观察者。
https://stackoverflow.com/questions/14340542
复制相似问题