对于Magento2一个特定的页面,其布局主要被两个重要的布局组件定义:页面布局文件和页面配置文件。
一个页面布局文件定义页面线框,例如,一列布局。技术页面布局是.xml文件,定义html页面<body> 区域内的结构。页面布局功能只是容器。所有的页面布局声明应在页面布局声明文件中声明。
页面配置也是一个.xml文件。它定义详细的结构(页面头部,底部等),内容和页面元信息,包括使用的页面布局。页面配置功能包括主元素和块(尤其是类和容器)。
我们还区分了第三类布局文件,通用布局。它们是定义内容和HTML页面组成中<body> 区域详细结构的.xml文件。这些文件用于返回Ajax请求,电子邮件,HTML片段等页面。
本文给出了每种布局文件类型的详细描述。
页面布局
页面布局声明页面区域内的线框,如一列布局或者两列布局。
允许的布局指令:
-
<container>
-
<referenceContainer>
-
<move>
-
<update>
页面布局示例:
<Magento_Theme_module_dir>/view/frontend/page_layout/2columns-left.xml
<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_layout.xsd">
<update handle="1column"/>
<referenceContainer name="columns">
<container name="div.sidebar.main" htmlTag="div" htmlClass="sidebar sidebar-main" after="main">
<container name="sidebar.main" as="sidebar_main" label="Sidebar Main"/>
</container>
<container name="div.sidebar.additional" htmlTag="div" htmlClass="sidebar sidebar-additional" after="div.sidebar.main">
<container name="sidebar.additional" as="sidebar_additional" label="Sidebar Additional"/>
</container>
</referenceContainer>
</layout>
页面布局文件常规位置
常规页面布局位置如下:
-
Module page layouts(模型页面布局):
<module_dir>/view/frontend/page_layout
-
Theme page layouts:(主题页面布局):
<theme_dir>/<Namespace>_<Module>/page_layout
页面布局声明
要能够使用一个布局为实际的页面进行渲染,你需要在layouts.xml 中声明它。
常规布局声明文件可能位于下面位置之一:
-
Module layout declarations(模型布局声明):
<module_dir>/view/frontend/layouts.xml
-
Theme layout declaration(主题布局声明):
<theme_dir>/<Namespace>_<Module>/layouts.xml
使用<layout></layout> 指令声明布局文件,如下指定:
-
<layout id="layout_file_name"> 例如,2columns-left.xml 页面布局如下声明:<layout id = "2columns-left"/>
-
<label translate="true|false">{Label_used_in_Admin}</label>
页面布局声明文件示例:
<Magento_Theme_module_dir>/view/frontend/layouts.xml
<page_layouts xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/PageLayout/etc/layouts.xsd">
<layout id="1column">
<label translate="true">1 column
</layout>
<layout id="2columns-left">
<label translate="true">2 columns with left bar
</layout>
<layout id="2columns-right">
<label translate="true">2 columns with right bar
</layout>
<layout id="3columns">
<label translate="true">3 columns
</layout>
</page_layouts>
页面配置
页面配置在一个页面布局文件中定义添加到线框的内容。一个页面配置也包含页面元信息和<head> 内容。
页面配置文件常规位置
常规页面配置文件位于下面位置:
-
Module page configurations(模型页面配置):
<module_dir>/view/frontend/layout
-
Theme page configurations(主题页面配置):
<theme_dir>/<Namespace>_<Module>/layout
页面配置结构和允许的布局指令
下表描述了页面配置文件的指令。要查看通用布局指令请看《Magento2布局指令》
Element |
Attributes |
Parent of |
Description |
<page></page> |
-
layout = {layout}
-
xsi:noNamespaceSchemaLocation ="{path_to_schema}"
|
-
<html>
-
<head>
-
<body>
-
<update>
|
Mandatory root element. |
<html></html> |
none
|
|
Mandatory element. |
<head></head> |
none |
-
<title>
-
<meta>
-
<link>
-
<css>
-
<script>
|
|
<body></body> |
none |
-
<block>
-
<container>
-
<move>
-
<attribute>
-
<referenceBlock>
-
<referenceContainer>
-
<action>
|
|
<attribute> |
-
name = {arbitrary_name}
-
value = {arbitrary_value}
|
|
Specified for <html> , rendered like following:
<html name="value'>
|
<title>
|
none |
none |
Page title |
<meta>
|
-
content
-
charset
-
http-equiv
-
name
-
scheme
|
none |
|
<link>
|
-
src
-
defer
-
ie_condition
-
charset
-
hreflang
-
media
-
rel
-
rev
-
sizes
-
target
-
type
|
none |
|
<css> |
-
src
-
defer
-
ie_condition
-
charset
-
hreflang
-
media
-
rel
-
rev
-
sizes
-
target
-
type
|
none |
|
<script>
|
-
src
-
defer
-
ie_condition
-
async
-
charset
-
type
|
none |
|
通用布局
通用布局定义HTML页面<body> 区域内的内容和详细结构。
通用布局文件常规位置
常规通用布局文件位于以下位置:
-
Module generic layouts(模型通用布局):
<module_dir>/view/frontend/layout
-
Theme generic layouts(主题通用布局):
<theme_dir>/<Namespace>_<Module>/layout
通用布局结构和允许的布局指令
下表描述了页面配置文件的指令。
Element |
Attributes |
Parent of |
Description |
<layout></layout> |
-
xsi:noNamespaceSchemaLocation="{path_to_schema}"
|
|
Mandatory root element. |
<update> |
-
handle="{name_of_handle_to_include}"
|
none |
|
<container> |
-
name="root"
-
For complete list of attributes, see Layout instructions
|
-
<block>
-
<container>
-
<referenceBlock>
-
<referenceContainer>
|
Mandatory element |
通用布局示例:
<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/layout_generic.xsd">
<update handle="formkey"/>
<update handle="adminhtml_googleshopping_types_block"/>
<container name="root">
<block class="Magento\Backend\Block\Widget\Grid\Container" name="googleshopping.types.container" template="Magento_Backend::widget/grid/container/empty.phtml"/>
</container>
</layout>
(责任编辑:最模板) |