[英]Magento: Delaying Head Block from loading until my event has fired
我有两个观察员:
<events>
<controller_action_layout_load_before>
<observers>
<QuBit_UniversalVariable_Model_Page_Observer>
<type>singleton</type>
<class>universal_variable_main/observer</class>
<method>setUniversalVariable</method>
</QuBit_UniversalVariable_Model_Page_Observer>
</observers>
</controller_action_layout_load_before>
<catalog_block_product_list_collection>
<observers>
<QuBit_UniversalVariable_Model_Page_Observer>
<type>singleton</type>
<class>universal_variable_main/observer</class>
<method>setCatalogProductListing</method>
</QuBit_UniversalVariable_Model_Page_Observer>
</observers>
</catalog_block_product_list_collection>
</events>
我想要一个包含javascript的块加载到我的Head中,但是需要使用Observer中收集的数据填充它。 我的问题是事件触发之前,块已加载。 我添加了一些日志记录来证明这一点。
2013-07-12T07:18:44+00:00 DEBUG (7): loading setUniversalVariable
2013-07-12T07:18:44+00:00 DEBUG (7): loading template
2013-07-12T07:18:48+00:00 DEBUG (7): loading setCatalogProductListing
目前,我正在使用布局XML添加块,我是否需要在setCatalogProductListing中以编程方式创建它,或者是否有其他方法可以防止在所有数据可用之前加载它?
甚至有可能在这里以编程方式创建它,还是已经确定了头部?
提前致谢
在调度catalog_block_product_list_collection
事件时,已经输出了head
,因此实际上没有什么可以改变它的(或者实际上,它取决于列表块的放置位置,但是在几乎所有情况下,它将位于头部之后)。
您必须直接处理布局和列表块,才能在渲染头部之前从集合中检索数据,但是操作方式取决于您是将代码应用于所有列表块还是仅应用于类别列表(知道也可以从CMS内容中调用块,因此在输出相应的页面/块本身之前可能不存在)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.