在Magento 1
我可以local.xml像这样编辑:
<default>
<reference name="root">
<block type="core/template" name="above_main" template="page/html/banner.phtml" />
</reference>
</default>
Run Code Online (Sandbox Code Playgroud)
我可以像这样编辑模板文件:
<body<?php echo $this->getBodyClass()?' class="'.$this->getBodyClass().'"':'' ?>>
<?php echo $this->getChildHtml('after_body_start') ?>
<div class="wrapper">
<?php echo $this->getChildHtml('global_notices') ?>
<div class="page">
<?php echo $this->getChildHtml('header') ?>
<?php // MY EDIT: ?>
<?php echo $this->getChildHtml('above_main');
<div class="main-container col2-left-layout">
<div class="main">
<?php echo $this->getChildHtml('breadcrumbs') ?>
<!-- rest of page... -->
Run Code Online (Sandbox Code Playgroud)
这将最终将文件page/html/banner.phtml插入到我自己的自定义位置的模板中above_main.
好的,我的问题是:
我如何在Magento 2中执行此操作?
Magento 2中没有更多的local.xml.Magento选择在模块中包含所有XML.如果要修改模块的XML,则必须在等效的主题目录中创建一个具有相同名称的新XML文件,并在那里进行修改.
有许多方法可以将模板插入特定页面.
备选方案1
假设您要在产品详细信息页面上添加模板.您需要catalog_product_view.xml在模块中创建新的xml文件.你的xml代码可能如下所示:
<?xml version="1.0"?>
<body>
<referenceContainer name="product.info.main">
<block class="Lapisbard\Catalog\Block\Product\View\Extra"
name="product.view.extra"
template="Lapisbard_Catalog::product/view/extra.phtml"
after="product.info.overview">
</block>
</referenceContainer>
</body>
Run Code Online (Sandbox Code Playgroud)
在这里,我在产品页面上插入自定义模板.您可以before/after根据需要放置模板的位置使用标记来排列容器.类似地,您可以在模块帐户中创建布局文件以处理页面.例如:您可以cms_index_index.xml用于主页.
备选方案2
您可以使用以下代码在任何其他模板文件中调用自定义模板文件:
echo $this->getLayout()
->createBlock('Lapisbard\Catalog\Block\Product\View\Extra')
->setTemplate('Lapisbard_Catalog::product/view/extra.phtml')
->toHtml();
Run Code Online (Sandbox Code Playgroud)
备选方案3
查看本教程,其中重点介绍如何利用default.xml进行结构更改https://gielberkers.com/creating-blocks-in-magento-2/
| 归档时间: |
|
| 查看次数: |
13247 次 |
| 最近记录: |