并不是所有的自定义布局可以通过扩展现有布局进行。如果自定义的量很大时,可以使用覆盖功能所需的布局文件。这意味着你在主题放置新文件将被用来代替碱布局文件的父主题布局文件。 在这篇文章中,页面布局,页面配置,和通用的布局被称为布局文件,作为压倒一切的机制,是所有的人相似。 与覆盖默认或父主题文件的说明,布局文件被称为压倒一切的布局文件。 **涉及压倒一切的布局定制的例子** 涉及压倒一切的布局,自定义的例子: * 抑制方法调用。 如果一个块具有取消原先调用的方法的效果的方法覆盖是没有必要的。在这种情况下,你可以通过添加其中调用的消除方法布局文件自定义布局。 * 修改方法的参数。 * 取消使用remove属性块/容器拆卸。 * 设置XML属性块block和containers容器。 某些属性,如htmlClass,htmlId,标签属性可以延长的布局改变。 * 删除块的参数。 * 修改并抑制手柄包容。 * 删除通过声明压倒一切的布局文件与空处理所有手柄的指令。 **如何覆盖布局** 本节讨论如何覆盖: * 基地布局 * 主题布局 **覆盖基础布局** 要添加一个压倒一切的基地布局文件(重写模块提供一个基地布局): 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' **自定义错误** 虽然布局覆盖机制提供了极大的灵活性,定制,它可以使用它来添加逻辑无关的变化。我们强烈建议你不要做以下修改: * 更改块名称或别名。块的名字不应该被改变,也不应该留在相同的父元素块的别名。 * 更改处理继承。例如,你不应该更改页面类型父句柄。