我试图找到解决方案,但没有结果.
我的任务是写模块.它应该在现有的块中插入一些html.
我的任务是写模块.它应该在现有的块中插入一些html.
我注意到当我使用布局.xml文件时,我可以把我的块插入一些引用
<reference name="product.info"> <block type='googlethis/link' name="googlethis" template="catalog/product/googlethis.phtml"/> </reference>
和我的块显示.
在其他情况下,我应该调用getChildHtml()方法,它不是很好,因为它会改变模板.phtml文件.
那么有没有办法将phtml块插入任何其他phtml块而不调用getChildHtml()?
有一种方法可以做到这一点,尽管它不是一个完全优雅的解决方案.在大多数情况下,它将会起作用,有时也被证明是有用的.
基本上,这个想法是在您的布局XML中替换要在其之前/之后渲染块的块,将该块作为子块放置在块中,然后在之前/之后渲染它的输出.
所以,我们假设你想在购物车详细信息页面上的总计块之前输出一个块,你可以在扩展的layout.xml中执行以下操作
<checkout_cart_index> <reference name="checkout.cart"> <block type="myextension/block" name="myextension.block" as="myextension_block" template="myextension/template.phtml"> <action method="setChild"><name>totals</name><block>totals</block></action> </block> <action method="setChild"><name>totals</name><block>myextension.block</block></action> </reference> </checkout_cart_index>
然后在您的template.phtml文件中,您将具有:
<div id="myextension"> // Your template code </div> // Render the totals block that you placed inside your block <?PHP echo $this->getChildHtml('totals'); ?>
正如我所说,这不符合每一种情况,它不是令人难以置信的优雅,但它的工作.
乔恩