【发布时间】:2012-11-16 21:42:58
【问题描述】:
我使用自定义 phtml 文件创建了一个简单的块(只是一个核心/模板)以在不修改其他 phtml 文件的情况下进行扩展。
但我无法让它显示,除非修改原始模板以添加 $this->getChildHtml('myblock') 东西。
我想在不更改任何其他 phtml 的情况下添加我的块。怎么做,不使用getChildHtml方法如何让block自动显示?
【问题讨论】:
我使用自定义 phtml 文件创建了一个简单的块(只是一个核心/模板)以在不修改其他 phtml 文件的情况下进行扩展。
但我无法让它显示,除非修改原始模板以添加 $this->getChildHtml('myblock') 东西。
我想在不更改任何其他 phtml 的情况下添加我的块。怎么做,不使用getChildHtml方法如何让block自动显示?
【问题讨论】:
如果您的块是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
【讨论】:
我知道该怎么做,
我使用自己的布局和模板创建自己的模块。
在布局中,我更新了调用父块的部分,首先插入我的新块,然后在我的模板中,我通过 getChildHtml() 调用父块,这样我就不必接触任何客户的文件。
向大家致以最诚挚的问候
【讨论】:
您可以在根块下定义您的块,如下所示:
<reference name="root">
<block type="core/template" name="custom_block" output="toHtml" template="custom/custom_block.phtml"/>
</reference>
诀窍是使用 output="toHtml" 将您的块作为输出块,只有输出块会自动呈现。将块放在根目录下很重要,因为默认情况下,主题根块是唯一负责渲染其所有子块的输出块。
更多详情,请看: http://magebase.com/magento-tutorials/digging-deeper-into-magentos-layout-xml-part-2/
希望这会对某人有所帮助。 干杯。
【讨论】:
查看这篇文章了解更多信息 - http://nwdthemes.com/2015/05/29/render-layout-block-automatically-in-magento/
【讨论】:
只有某些文件具有显示所有子节点的能力。话虽如此,绝大多数人都没有内置这种能力。
您可以通过在 phtml 文件中添加一行来启用此功能,以呈现附加到它的任何块。
<?php echo $this->getChildHtml() ?>
【讨论】: