我用自定义 phtml 文件创建了一个简单的块(只是一个核心/模板),以便在不修改其他 phtml 文件的情况下进行扩展。
但是我不能让它显示,除非通过修改原始模板来添加$this->getChildHtml('myblock')
的东西。
我想在不更改任何其他 phtml 的情况下添加我的块。怎么做,怎么做块自动显示getChildHtml
方法?
如果您的块类型为 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/
希望这会帮助某人。干杯。
- 使用核心/文本类型。这些块将自动呈现。但是,当您的块使用自己的类时,此方法不适用。
- 任何 core/text_list 类型的块都将自动呈现其所有子块。只需使您的块是核心/text_list的子项即可。
查看此文章以获取更多信息 - http://nwdthemes.com/2015/05/29/render-layout-block-automatically-in-magento/
只有某些文件能够显示所有子节点。 话虽如此,绝大多数都没有内置该功能。
您可以通过在 phtml 文件中添加一行来启用此功能,该行要呈现附加到它的任何块。
<?php echo $this->getChildHtml() ?>