magento2布局-重写一个layout布局文件

7天成为Magento系统架构师,现在开始学习Magento全栈开发!

《Magento2.X企业级开发实战》

magento2布局-重写一个layout布局文件

并非所有布局自定义都可以通过扩展布局来执行。如果自定义量很大,您可以对所需的布局文件使用覆盖功能。这意味着将使用您放置在主题中的新文件而不是基本布局文件的父主题布局文件。

在本文中,页面布局、页面配置和通用布局被称为布局文件,因为它们的覆盖机制是相似的。

具有覆盖默认或父主题文件的指令的布局文件被称为覆盖布局文件。

涉及覆盖布局的自定义示例
涉及覆盖布局的自定义示例:

抑制方法调用。

如果块具有取消原始调用方法效果的方法,则不需要覆盖。在这种情况下,您可以通过添加调用取消方法的布局文件来自定义布局。
修改方法参数。
使用 remove 属性取消块/容器删除。
设置Block和Container的 XML 属性。
某些属性,如 htmlClass、htmlId、标签属性可以在扩展布局中更改。
删除块参数。
修改和抑制处理包含。
通过声明一个空句柄的覆盖布局文件来删除所有句柄指令。
如何覆盖布局
本节讨论如何覆盖:

基础布局
主题布局
覆盖基本布局
添加覆盖基本布局文件(覆盖模块提供的基本布局):

将同名的布局文件放在以下位置:

 <theme_dir>
   |__/<Namespace_Module>
     |__/layout
       |__/override
          |__/base
            |--<layout1>.xml
            |--<layout2>.xml

这些文件覆盖以下布局:

  • <module_dir>/view/frontend/layout/<layout1>.xml
  • <module_dir>/view/frontend/layout/<layout2>.xml

如, <theme_dir>/Magento_Checkout/layout/override/base/checkout_cart_index.xml 将会覆盖 Magento_Checkout/view/frontend/layout/checkout_cart_index.xml.

覆盖主题布局

添加覆盖主题文件(覆盖父主题布局):

  1. 将同名的布局文件放在以下位置:
<theme_dir>
  |__/<Namespace_Module>
    |__/layout
      |__/override
         |__/theme
            |__/<Parent_Vendor>
               |__/<parent_theme>
                  |--<layout1>.xml
                  |--<layout2>.xml

这些文件覆盖以下布局:

//layout/.xml //layout/.xml
例如,/Magento_Checkout/layout/override/theme/Magento/luma/checkout_cart_index.xml 将覆盖 app/design/frontend/Magento/luma/Magento_Checkout/layout/checkout_cart_index.xml。

要覆盖页面布局文件,请使用 page_layout 目录名称而不是布局。
定制错误
尽管布局覆盖机制提供了极大的自定义灵活性,但可以使用它来添加逻辑上不相关的更改。 我们强烈建议您不要进行以下更改:

更改块名称或别名。 块的名称不应更改,块的别名也不应更改保留在同一父元素中。
更改句柄继承。 例如,您不应更改页面类型父句柄。

如无特殊说明或标注,任何个人或组织,复制、转载、采集本站内容请注明:
本文来源于:【Magento中文网】,并添加本文地址链接。
如未按上述操作复制或转载,本站有权追究法律责任。
若本站内容侵犯了原著者的合法权益,可联系我们进行处理。