2011-02-15 71 views
6

如果我希望有机会将块注入(“头部”块),我应该观察哪些magento前端事件?通过观察事件将头部块注入头部

而在观察者的代码中,如何检查当前布局是否设置了一些句柄(例如not_logged_in)。

+0

好吧,我发现这个事件列表http://masteringmagento.com/2010/06/events-list-in-magento-community-1-4/,我将使用controller_action_layout_render_before。 现在我该如何检查手柄? – epeleg 2011-02-15 12:38:57

+2

为什么你不使用布局文件? – clockworkgeek 2011-02-15 14:02:44

+0

因为在我的情况下,“新”布局更改模板,不仅增加块。所以如果一些先决条件尚未满足(扩展没有正确配置),那么我不希望发生修改。 如果布局xml文件有一个指向辅助函数的“onlyIf”属性,它可能会很好,然后该辅助函数可以决定覆盖是否应该实际发生。 – epeleg 2011-02-15 18:16:05

回答

4

给这个

controller_action_layout_generate_blocks_after 

事件一试。布局对象及其子块应该由事件触发点来实例化。

这里只有过一个布局对象,你可以抢在游戏手柄与

// get the layout->get the updates manager->get the handles 
$handles = Mage::getSingleton('core/layout')->getUpdate()->getHandles(); 
var_dump($handles); 

如果你工作在前端代码,并试图坚持Magento的公约,它可能是最好添加一个layout.xml文件添加到你的模块,并使用布局文件添加你的模块。尽管找出一些新东西,但它的乐趣不大!

1

我很欣赏博客上的插件,但clockworkgeek是正确的。完成此操作的最佳方法是使用布局文件来添加所需的块。这些块也可以根据任意代码更改其自己的渲染行为。

如果有理由不能使用布局,请在您的问题中详细说明一下,我们很乐意提供帮助。

谢谢, 乔