Magento显示没有ChildHtml的块

时间:2012-11-16 21:42:58

标签: magento layout

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

但是除了修改原始模板以添加$this->getChildHtml('myblock')之外,我无法进行显示。

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

5 个答案:

答案 0 :(得分:6)

如果您的块类型为core/text_listpage/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)

  • 使用核心/文字类型。这些块将自动呈现。但是,当您的块使用自己的类时,此方法不适用。
  • core / text_list 类型的任何块都会自动呈现其所有子项。只需让你的块是core / text_list的孩子。

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

答案 4 :(得分:-1)

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

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

<?php echo $this->getChildHtml() ?>