php – Magento.将块插入另一个而不改变模板代码

前端之家收集整理的这篇文章主要介绍了php – Magento.将块插入另一个而不改变模板代码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图找到解决方案,但没有结果.
我的任务是写模块.它应该在现有的块中插入一些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'); ?>

正如我所说,这不符合每一种情况,它不是令人难以置信的优雅,但它的工作.

乔恩

猜你在找的PHP相关文章