php – Magento.将块插入另一个而不改变模板代码
发布时间:2020-12-13 16:34:15 所属栏目:PHP教程 来源:网络整理
导读:我试图找到解决方案,但没有结果. 我的任务是写模块.它应该在现有的块中插入一些html. 我注意到当我使用布局.xml文件时,我可以把我的块插入一些引用 reference name="product.info" block type='googlethis/link' name="googlethis" template="catalog/produc
我试图找到解决方案,但没有结果.
我的任务是写模块.它应该在现有的块中插入一些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'); ?> 正如我所说,这不符合每一种情况,它不是令人难以置信的优雅,但它的工作. 乔恩 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |