DRUPAL8模块开发 - Drupal8注册layouts(一)

翻译者:长风Drupal开发: Drupal8注册layouts

原文链接:https://www.drupal.org/docs/8/api/layout-api/how-to-register-layouts

这个章节中,我们将系统学习Drupal8注册layouts,Layouts api从Drupal8.3.X开始也引用experimentally。

Drupal8开发中,有以下几种方法注册layout,我们将在下面的章节中逐一从简单、常见到高级讨论学习Drupal8注册layouts。

内容的表格

使用*.layouts.yml注册layouts

最常见的Drupal8注册layouts的方法是将*.layouts.yml文件放在你的Drupal8模块或者Drupal8主题中,最开始的一部分是主题或者模块的机器名字,比如你的模块的机器名字是my_custom_module,你可以命名这个文件为my_custom_module.layouts.yml,
你要把这个文件放在你的Drupal8模块或者Drupal8主题的根目录中,并且需要清空Drupal8的缓存。
最简单的Drupal layouts api例子
one_column:
label: 'One column'
category: 'My Layouts'
template: templates/one-column
default_region: main
regions:
main:
label: Main content
two_column:
label: 'Two column'
category: 'My Layouts'
template: templates/two-column
default_region: main
regions:
main:
label: Main content
sidebar:
label: Sidebar

这里注册了两个layouts,分别是 "One column" and "Two column".  'label' and 'category' 是必需的。
我们可以看到,第一个layout 定义了一个单一的“main content”region,第二个layout 有两个region,分别是“main content”和“sidebar”.
每一个layout都必需指定一个twig模板,这个模块不应该包括文件的扩展名.html.twig,这就是说如果你指定的模板文件是templates/one-column ,那么实际的模板是 templates/one-column.html.twig
备注:你不需要自己写hook_theme(), Drupal8 Layout API 会替你处理这些。

在你的twig文件中,你可以使用例如{{ content.main }}以及{{ content.sidebar }} 来署出每一个region 。例如,在templates/two-column.html.twig文件中,你可以
<div class="two-column">
<div class="main-region">
{{ content.main }}
</div>
<div class="sidebar-region">
{{ content.sidebar }}
</div>
</div>
这是最简单、最容易的Drupal8注册layouts的方式。要学习更高级的Drupal8注册layouts方法,继续阅读由长风Drupal开发团队编写的Drupal开发教程。