Magento 使用 getChildHtml 调用块

问题描述 投票:0回答:3
magento layout block
3个回答
0
投票

我进步了一点

通过阅读:Magento - 显示块,但仅在我用 getChildHtml 调用它时显示

和:了解Magento块和块类型

我知道 core/text_list 会自动打印内容,所以我将类型更改为“page/html_wrapper”。

问题是现在这两个元素的内容是重复的。一次在 top.phtml 的内容之前,第二次在调用 getChildHtml 时。

任何想法将不胜感激。


0
投票

尝试在以下文件中调用函数

template/page/html/topmenu.phtml


0
投票

getChildHtml 方法是块/模板的真正力量。它允许您渲染辅助块(“子”)内的所有块。在主块(“父”)内。块调用块调用块是页面的整个 HTML 布局的创建方式。

格式:

getChildHtml('block_name'); ?>

注意:在 PHTML 模板文件中使用 $block 而不是 $this,因为根据 Magento 2 编码标准,不鼓励使用 $this

如果该命令可以在任何地方的模板文件中找到 block_name,它将为您提供 block_name 的 HTML,前提是 block_name 是当前块的子块。

例如,让我们看一下 module-wishlist 的模板文件 (view.phtml) 的摘录:

助手(\Magento\Wishlist\Helper\Data::class)->isAllow()):?>
<div class="toolbar wishlist-toolbar"><?= $block->getChildHtml('wishlist_item_pager'); ?></div>
<?= ($block->getChildHtml('wishlist.rss.link')) ?>

在这里我们可以看到类 wishlist-toolbar 的内容由块呈现:wishlist_item_pager 和 wishlist.rss.link。这些块是子块,在 wishlist_index_index.xml 中定义(位于 vendor\magento\module-wishlist iew rontend\layout):

注意:getChildHtml 方法只能包含布局中指定为子块(子)的块。这允许 Magento 只实例化它需要的块,也允许你根据上下文为块设置不同的模板。
© www.soinside.com 2019 - 2024. All rights reserved.