在主题中添加区域
在主题中添加区域需要:
- 在
THEMENAME.info.yml文件中添加区域的元数据。 - 编辑
page.html.twig文件并输出新的区域。
注意:如果你在主题中声明了任何区域(哪怕只有一个),那么默认区域将不再适用,你需要自己声明所有希望使用的区域。
任何原来在已不存在区域中的区块(因为你未定义它们)都会被禁用——特别是当你编辑 THEMENAME.info.yml 并通过 drush cr 重建缓存时,你会看到类似这样的提示:
区块 themename_breadcrumbs 被分配到无效区域 breadcrumb,已被禁用。
如果你访问 /admin/structure/block,所有被禁用的区块会显示在最上方,并带有 (已禁用) 标记。你可以通过拖动或使用“区域”下拉框重新分配它们,或者删除不再需要的区块。
请确保保留 page_top 和 page_bottom 区域。这是“隐藏”的区域,用于页面顶部和底部的标记,例如分析代码或管理员工具栏。你无需在 THEMENAME.info.yml 文件中列出它们,只要不要在 html.html.twig 模板中删除即可。模块可能依赖它们的存在。
在 info 文件中添加区域
首先在 THEMENAME.info.yml 文件中声明任何新的区域。区域通过 regions 键声明,例如:
regions: header: 'Header' content: 'Content' footer: 'Footer'
区域键必须是字母数字组合,可以包含下划线 (_) 并且必须以字母开头。键是机器名(用于代码中),值是管理员界面中显示的可读名称。
在模板中添加区域
要让区域显示其中放置的内容,你需要在 page.html.twig 文件中添加这些新区域。区域会作为 Twig 变量提供,其名称与 THEMENAME.info.yml 文件中使用的键相对应,并以 page. 前缀。
例如:
header: 'Header'
...会变成:
{{ page.header }}
它们和其他 Twig 变量一样,可以包含在任何适合的标记中。
(默认隐藏区域的语法不同,见下文。)
默认区域
参见 page.html.twig 文档 以获取默认区域列表。
- page.header
- page.primary_menu
- page.secondary_menu
- page.highlighted
- page.help(动态帮助文本,主要用于管理页面)
- page.content(当前页面的主要内容)
- page.sidebar_first
- page.sidebar_second
- page.footer
- page.breadcrumb
如果你的主题没有声明任何区域,Drupal 会采用这一默认集合。
这些区域对应于默认文件 core/modules/system/templates/page.html.twig 的预期结构,同时还有两个隐藏区域 page_top 和 page_bottom——如果你覆盖默认值,不需要声明它们,但必须在 html.html.twig 模板中保留 {{ page_top }} 和 {{ page_bottom }} Twig 变量。