我使用自定义 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 /块/文本/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() ?>