我使用自定义的phtml文件创建一个简单的块(只是一个核心/模板),以便在不修改其他phtml文件的情况下进行扩展。
但是除了修改原始模板以添加$this->getChildHtml('myblock')
之外,我无法进行显示。
我想在不更改任何其他phtml的情况下添加我的块。如何做到这一点,如何在没有getChildHtml
方法的情况下自动显示块?
答案 0 :(得分:6)
如果您的块类型为core/text_list
或page/html_wrapper
,则它将显示所有子节点。请参阅core/text_list
块的toHtml()函数:http://svn.magentocommerce.com/source/branches/1.7/app/code/core/Mage/Core/Block/Text/List.php
答案 1 :(得分:1)
我弄清楚如何做到这一点,
我使用自己的布局和模板创建自己的模块。
在布局中我更新了调用父块的部分,首先插入我的新块,然后在我的模板中,我通过getChildHtml()调用父,所以我不必触摸任何客户端的文件。
祝大家好评
答案 2 :(得分:1)
您可以在根块下定义块,如下所示:
<reference name="root">
<block type="core/template" name="custom_block" output="toHtml" template="custom/custom_block.phtml"/>
</reference>
诀窍是使用output =“toHtml”将块作为输出块,只有输出块自动呈现。将块放在root下是很重要的,因为默认情况下,主根块是唯一负责呈现其所有子块的输出块。
有关详细信息,请查看: http://magebase.com/magento-tutorials/digging-deeper-into-magentos-layout-xml-part-2/
希望这会对某人有所帮助。 欢呼声。
答案 3 :(得分:0)
查看此文章了解更多信息 - http://nwdthemes.com/2015/05/29/render-layout-block-automatically-in-magento/
答案 4 :(得分:-1)
只有某些文件才能显示所有子节点。话虽如此,绝大多数人都没有内置的能力。
您可以通过在phtml文件中添加一行来启用此功能,该文件要呈现附加到其上的任何块。
<?php echo $this->getChildHtml() ?>