> Magento2中文手册 > 重写一个布局(Layout)

重写一个布局(Layout)

这篇文章讲什么?

不是所有的布局定制可以由 扩展现有的布局。 如果自定义的量大,你可以使用重写函数所需的布局文件。 这意味着在主题中放置的新文件将代替父主题 布局文件 基本 layout file布局文件.

本文中,页面布局, 页面配置, 和 通用布局 被称为“布局文件”,因为它们的重写机制类似于所有的文件。

怎样重写一个布局(Layout)

本节讨论如何重写:

  • 基地布局
  • 主题布局

覆盖基础布局

添加一个重写的基础布局文件(覆盖模块提供的基本布局):

  1. 在下列位置放置相同名称的布局文件:
<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

重写主题布局

添加一个重写主题文件(覆盖父主题布局):

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

这些文件覆盖以下布局:

  • <parent_theme_dir>/<Namespace>_<Module>/layout/<layout1>.xml
  • <parent_theme_dir>/<Namespace>_<Module>/layout/<layout1>.xml

重写页面布局文件,使用“page_layout目录名称代替“布局”

定制的错误

虽然布局重写机制提供了极大的定制灵活性,但可以使用它来添加逻辑上无关的更改。我们强烈建议您不要做以下更改:

  • 更改块名或别名。不应改变块的名称,也不应在同一父元素中保留块的别名。
  • 改变句柄继承。例如,不应更改页类型父句柄。
  • 布局(Layout)扩展
  • 创建一个主题
  • 布局(Layout)说明