2011-02-15 55 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是正確的。完成此操作的最佳方法是使用佈局文件來添加所需的塊。這些塊也可以根據任意代碼更改其自己的渲染行爲。

如果有理由不能使用佈局,請在您的問題中詳細說明一下,我們很樂意提供幫助。

謝謝, 喬