【问题标题】:Magento display a block without ChildHtmlMagento 显示没有 ChildHtml 的块
【发布时间】:2012-11-16 21:42:58
【问题描述】:

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

但我无法让它显示,除非修改原始模板以添加 $this->getChildHtml('myblock') 东西。

我想在不更改任何其他 phtml 的情况下添加我的块。怎么做,不使用getChildHtml方法如何让block自动显示?

【问题讨论】:

    标签: magento layout


    【解决方案1】:

    如果您的块是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

    【讨论】:

      【解决方案2】:

      我知道该怎么做,

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

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

      向大家致以最诚挚的问候

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          【解决方案4】:
          • 使用 core/text 类型。这些块将自动呈现自己。但是,当您的块使用自己的类时,此方法不适合。
          • core/text_list 类型的任何块都会自动呈现其所有子级。只要让你的块是 core/text_list 的子级。

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

          【讨论】:

            【解决方案5】:

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

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

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

            【讨论】:

            • 用户明确询问如何在不使用 getChildHtml() 的情况下进行操作。
            • 他不想使用 $this->getChildHtml('block_id')。他希望在不修改原始 PHTML 的情况下显示它,这一切都很好而且很花哨。但是除非已经调用了 $this->getChildHtml(''),否则不能让 PHTML 文件出现在任何其他文件中。正如我所说,这发生在很少的文件中。他正在寻找这个自定义块神奇地出现。如果没有 $this->getChildHtml() 则没有多少布局 XML 将在预期位置显示它。
            猜你喜欢
            • 2014-01-28
            • 2011-12-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-04-23
            • 1970-01-01
            相关资源
            最近更新 更多