Magento显示一个没有ChildHtml的块



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

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

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

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

我想出了怎么做,

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

在布局中,我更新了调用父块的部分,首先插入我的新块,然后在模板中,我通过 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() ?>

最新更新