我正在尝试发现如何配置一个Observer来检查magento在类别/搜索结果下列出产品时何时调用价格,但目前我找不到任何线索。
之前有人有过这种需求,可以给我一些指示吗?
我正在使用Magento 1.6.0.0。
答案 0 :(得分:9)
您可以通过观察目录产品的collection_load_after事件来实现此目的:
<catalog_product_collection_load_after>
<observers>
<Your_Module_Observer>
<type>model</type>
<class>your_module/Observer/class>
<method>modifyPrices</method>
</Your_Module_Observer>
</observers>
</catalog_product_collection_load_after>
然后,您可以遍历该集合并获取每个产品的价格,并根据需要进行更改:
$products = $observer->getCollection();
foreach( $products as $product )
{
$product->setPrice( $myCustomPrice );
}
不确定这是否正是您所寻找的,但希望它能为您指明正确的方向。
答案 1 :(得分:0)
一般意思是为任何特定事件设置观察者
请参阅https://magento.stackexchange.com/questions/314/how-to-know-the-magento-event-that-we-want-to-hook
在模块Logevent中,config.xml
<?xml version="1.0" encoding="UTF-8"?>
<modules>
<Maticode_Logevent>
<version>0.1</version>
</Maticode_Logevent>
</modules>
<global>
<models>
<Logevent>
<class>Maticode_Logevent_Model</class>
</Logevent>
</models>
<events>
<controller_action_predispatch>
<observers>
<Logevent>
<type>singleton</type>
<class>Logevent/observer</class>
<method>controller_action_predispatch</method>
</Logevent>
</observers>
</controller_action_predispatch>
</events>
</global>
和Model / observer.php
<?php
class Maticode_Logevent_Model_Observer {
public function controller_action_predispatch($observer) {
Mage::log ( $observer->getEvent ()->getControllerAction ()->getFullActionName (),null, 'eventlog.log' );
}
}
这样,在
中 var/log/eventlog.log file
你可以看到任何测试动作的可能钩子