2

我使用自定义 phtml 文件创建了一个简单的块(只是一个核心/模板),以在不修改其他 phtml 文件的情况下进行扩展。

但我不能让它显示,除非通过修改原始模板来添加$this->getChildHtml('myblock')东西。

我想在不更改任何其他 phtml 的情况下添加我的块。如何做到这一点,如何使块自动显示没有getChildHtml方法?

4

5 回答 5

6

如果您的块是类型core/text_listpage/html_wrapper那么它将显示所有子节点。请参阅core/text_list块的 toHtml() 函数:http: //svn.magentocommerce.com/source/branches/1.7/app/code/core/Mage/Core /块/文本/List.php

于 2012-11-17T03:44:13.907 回答
1

我想出了如何做到这一点,

我使用自己的布局和模板创建自己的模块。

在布局中,我更新了调用父块的部分,首先插入我的新块,然后在我的模板中我通过 getChildHtml() 调用父块,这样我就不必触摸任何客户的文件。

最好的问候,给大家

于 2012-11-26T13:51:08.300 回答
1

您可以在根块下定义您的块,如下所示:

    <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/

希望这会对某人有所帮助。干杯。

于 2013-07-11T14:29:44.770 回答
0
  • 使用核心/文本类型。这些块将自动呈现自己。但是,当您的块使用自己的类时,此方法不适合。
  • 任何core/text_list类型的块都会自动渲染它的所有子块。只要让你的块是 core/text_list 的孩子。

查看这篇文章了解更多信息 - http://nwdthemes.com/2015/05/29/render-layout-block-automatically-in-magento/

于 2015-05-29T10:34:51.663 回答
-1

只有某些文件具有显示所有子节点的能力。话虽如此,绝大多数人都没有内置这种能力。

您可以通过在 phtml 文件中添加一行来启用此功能,该文件要呈现附加到它的任何块。

<?php echo $this->getChildHtml() ?>
于 2012-11-16T21:48:10.923 回答