有没有办法让你自定义的观察者比在同一事件上发射的Magento具有更高的优先级。我的问题是我正在修改欢迎块的输出,但是企业的PageCache在同一个corecore_block_abstract_to_html_after事件上触发。
我尝试将它放在我的配置中,但它不像cron jobs那样工作。
<core_block_abstract_to_html_after>
<observers>
<modify_welcome>
<type>singleton</type>
<class>groupname_page/observer</class>
<method>changeWelcomeText</method>
</modify_welcome>
<enterprise_pagecache>
<class>enterprise_pagecache/observer</class>
<method>renderBlockPlaceholder</method>
</enterprise_pagecache>
</observers>
</core_block_abstract_to_html_after>
答案 0 :(得分:6)
/app/etc/modules/Groupname_Page.xml
<config>
<modules>
<Groupname_Page>
<active>true</active>
<codePool>local</codePool>
<depends>
<!-- Your dependencies go here -->
</depends>
</Groupname_Page>
<Enterprise_PageCache>
<depends>
<Groupname_Page />
</depends>
</Enterprise_PageCache>
</modules>
</config>
答案 1 :(得分:0)
无法控制观察者的秩序。
如果您查看Mage_Core_Model_App::dispatchEvent()
方法,您将看到Magento如何从config.xml文件获取给定事件的所有观察者并逐个触发它们。
重写欢迎屏块可以帮助您。
答案 2 :(得分:0)
另一种选择是禁用企业缓存观察器,并在您自己的观察者中运行已禁用的观察者执行的方法
在你的模块的config.xml中:
<core_block_abstract_to_html_after>
<observers>
<modify_welcome>
<type>singleton</type>
<class>groupname_page/observer</class>
<method>changeWelcomeText</method>
</modify_welcome>
<enterprise_pagecache>
<type>disabled</type>
</enterprise_pagecache>
</observers>
</core_block_abstract_to_html_after>
在您的Observer.php
:
public function changeWelcomeText(Varien_Event_Observer $observer)
{
//do the stuff you want your observer to do first
//and after it's done, call the Enterprise observer's method
Mage::getSingleton('enterprise_pagecache/observer')->renderBlockPlaceholder($observer);
}
HTH