我创建了自定义块,它应该替换现有的Magento块。 想要在整个网站上用我的块替换现有的Magento块,独立地在页面和现有Magento块存在的地方。应该参考什么? 其实我有这样的事情:
<default>
<reference name="left">
<remove name="left.newsletter" />
<block type="newsletter/subscribe" name="newsletter" after="-" template="mynewsletter/subscribe.phtml"/>
</reference>
</default>
我删除了左侧的默认新闻稿,然后创建我的简报块。它有效,但只替换左侧的时事通讯块。想在整个网站上使用我的块代替left.newsletter,即使该块在其他参考文献中如内容或正确等。我该怎么办?
答案 0 :(得分:2)
如果要用自己的块Mage_Newsletter_Block_Subscribe
替换My_Module_Block_Subscribe
的每个出现,请使用类重写。在您的模块 config.xml :
<global>
<blocks>
<newsletter>
<rewrite>
<subscribe>My_Module_Block_Subscribe</subscribe>
</rewrite>
</newsletter>
</block>
</global>
但是根据您的代码判断,您实际上没有自定义块,只有自定义模板。您可以使用core_block_tohtml_before
事件的观察者更改模板,如果其类为setTemplate('mynewsletter/subscribe.phtml')
,则会在块上调用Mage_Newsletter_Block_Subscribe
。