原著:Ivan Zugec
布局生成器模块允许您通过提供新的拖放界面来自定义实体的设计,例如内容类型,词汇表等。新界面使用您的前端主题,并且可以正确预览将要使用的实际内容。
这使构建布局变得更加容易,因为您不必保存并在前端查看外观,就可以在构建时预览更改。
启用后,该模块将使用新的布局生成器替换“管理显示”页面。除了看到页面上的所有字段,您将看到“管理布局”按钮,该按钮将您重定向到布局构建器页面。
入门
从Drupal8.5开始,Layout Builder 模块已纳入Drupal核心,因此您无需下载其他模块。
只需转到扩展并启用Layout Builder(布局生成器)。
注意:Layout Builder在Drupal 8.7中变得稳定,请确保您使用的是最新版本。在旧版本中,这是一个实验性模块。
使用布局生成器自定义内容类型
如前所述,启用Layout Builder后,您将不再需要通过“管理显示”页面来管理字段格式化程序。相反,您将使用Layout Builder的新拖放界面,该界面使用您的前端主题。
现在,让我们使用“文章”内容类型上的模块。我们创建的布局将用于所有文章内容。
1.安装模块后,转到“结构”,“内容类型”,然后在“文章”行上单击“管理显示”。
2.展开“自定义显示设置”并启用“完整内容”查看模式,然后单击“保存”。
3.然后通过单击“管理显示”下面的选项卡进入“完整内容”查看模式。
4.进入“完整内容”查看模式后,滚动到底部,然后单击“布局”选项并选中“使用布局生成器”,然后单击“保存”。
5.在视图模式下启用布局生成器后,您应该只会看到“管理布局”,而不是格式化程序。
原来的样子:
现在的样子:
6.单击“管理布局”时,您将使用不同的界面重定向到前端。
将节添加到布局
通过添加单个部分来构建布局,而不是像使用其他模块(如Panels / Panelizer或Display Suite)那样选择单个布局。一个section可以有一个单列或多个列。
1.让我们从删除默认部分开始。单击X按钮。
2.单击“添加section”,然后选择该section的布局。对于本教程,单击“两栏”。
3.section可以配置,在这种情况下,您可以选择列宽。只需将其保留为“ 50%/ 50%”即可。然后点击“添加section”。
添加后,您将在每个section区域看到一个“添加区块”链接。
如果要更改section区域的宽度,只需单击“配置section”进行调整。
将块添加到section区域
一旦添加了section,就可以将区块添加到section区域中。添加区块非常简单,只需单击“添加区块”,“选择区块”选项将从右侧滑出。
选择一个区块
只需单击即可从右侧选择区块。您甚至可以使用“按区块名称过滤”文本字段按名称过滤来查找区块。在布局构建器模块的上下文中,“区块”超出了您通常认为的区块。特别是如果您习惯通过“区块布局”页面将块添加到主题区域中。一方面,内容字段显示为区块。
在Layout Builder中,内容类型的字段显示为区块,这意味着可以将其添加到section区域。所有字段均应归入“内容字段”下。
随着创建更多字段,此列表将增加。
让我们通过在左侧列中添加“ Authored on”字段来继续构建布局。单击左栏中的“添加区块”,然后按区块名称进行过滤。
当您单击要添加的区块时,就可以调整字段格式器。配置格式化程序后,单击“添加区块”。
继续并在右列中添加已更改字段。
您会注意到,添加字段时,可以配置其使用的格式化程序。布局生成器仍将使用其格式程序呈现该字段。
您可以通过将鼠标悬停并单击铅笔图标来编辑区块。您将获得一个下拉菜单,您可以在其中选择配置,移动或删除区块。
移动区块
可以通过单击区块并将其拖动到新的section区域,来将其移动到其他section区域。
完成构建文章内容类型布局
现在,您知道如何在布局中添加一个section,并在这些section中添加区块,让我们完成构建Article内容类型。
到目前为止,我们只有一个两列的区域,左侧为“ Authored on”(授权于)字段,右侧为“ Changed”(更改)字段。现在,我们将为“图像”,“正文”,“标签”和“注释”字段创建其他部分。
正文和图像字段
1.单击当前栏下方的“添加section”,然后选择“两栏”,从“栏宽”下拉列表中选择“ 25%/ 75%”,然后单击“添加section”。
2.单击左列中的“添加区块”,然后向其中添加图像字段。
3.单击右侧的“添加区块块”,然后将“正文”字段添加到其中。
4.单击我们刚刚为图像和正文创建的section下面的“添加section”,在这一section中,我们将添加标签和注释字段。选择此section的“一列”布局。
5.单击“添加区块”,然后在其中添加标签和注释字段。
6.您可以通过取消选中“保存布局”按钮正下方的“显示内容预览”来关闭字段预览。
这使移动字段变得更加容易,并且易于查看所有字段,因为有时字段预览占用了大量空间。
添加所有必填字段后,布局应如下所示。
7.滚动到顶部,然后单击“保存布局”。
覆盖默认布局
我们构建的布局将应用于所有文章。但是,如果要自定义单个文章的布局怎么办?如果您想为文章添加额外的页脚怎么办?
布局生成器使您可以覆盖单个内容项的默认布局。
要覆盖布局,您需要打开功能,默认情况下该功能处于关闭状态。
转到“管理显示”页面,您之前在其中选中了“使用布局生成器”,然后选中“允许每个内容项自定义其布局”。然后点击保存。
现在,如果您转至一篇文章,应该会看到“布局”选项卡按钮。
现在,您可以使用相同的界面修改布局。但是,这只会更改此特定内容的布局。
如果您想将布局恢复为默认设置,可以单击“恢复为默认设置”。
使用布局生成器作为页面生成器
在上面的部分中,我们研究了如何使用Layout Builder来定制Article内容类型。创建的任何文章都将具有相同的布局。现在,通过定制单个内容的布局,将模块用作页面构建器。
但是在开始之前,我们需要在“基本页面”内容类型上启用Layout Builder。
1.转到结构,内容类型,然后单击“基本页面”行上的“管理显示”。
2.通过转到“自定义显示设置”并启用它来启用“完整内容”查看模式。
3.转到“完整内容”,然后选中“使用布局生成器”,这是很重要的,请选中“允许每个内容项自定义其布局。”
“允许每个内容项...”选项使我们可以根据每个内容自定义布局。
这是我们将创建的屏幕截图:
我们将使用两个section和三个区块创建一个自定义主页。
创建基本页面
现在,让我们继续使用“基本页面”内容类型创建一个主页。
1.转到内容,“添加内容”和“基本页面”。
2.在标题中输入首页,然后单击保存。不用担心在“正文”字段中添加任何内容,因为我们将使用“布局生成器”来创建页面。
3.您应该在Delete旁边看到一个名为Layout的新标签,继续并单击它。
添加对齐按钮
标题栏中的文本将居中对齐。但是,我们需要在编辑器中添加对齐按钮才能实现这一点。
转到“配置”,“文本格式和编辑器”,然后在“基本HTML”行上单击“配置”。
通过将调整按钮拖动到“活动工具栏”中,将其添加到编辑器中。
该按钮的工作原理是将一个类添加到元素text-align-center,例如text-align-right,text-align-justify等等。但是,我们需要更改“限制允许的HTML标记并纠正错误的HTML”过滤器,以允许将类添加到元素。
向下滚动到“允许的HTML标签”,然后添加class到
并添加标题标签。
原来的样子:
<h2 id> <h3 id> <h4 id> <h5 id> <h6 id> <p>
修改后的样子:
<h2 id class> <h3 id class> <h4 id class> <h5 id class> <h6 id class> <p class>
现在,您可以使用“基本HTML”文本格式对齐(或证明)内容。
添加自定义区块
配置了文本格式后,我们添加标题文本。
1.在页面顶部添加“一列”section。
2.然后单击“添加区块”,“创建自定义区块”。
您可以使用布局生成器添加任何自定义块类型。您可以转到/ admin / structure / block / block-content / types查看所有可用的区块类型。
3.在“标题”字段中添加“标题文本”,然后取消选中“显示标题”。
4.然后在编辑器中输入一些文本并将其居中,然后单击“添加区块”。
例子:
欢迎来到Drupal
Drupal是使用PHP编写的功能强大的开源CMS。
将区块添加到该section后,您应该会看到实际区块内容的预览。当然,请确保已选中“显示内容预览”以查看它。
嵌入图像
现在让我们看一下嵌入图像。
我们嵌入图像的方法是使用Entity Embed模块将图像嵌入Basic块。这将使我们不必创建自定义区块类型。
1.我不会在本教程中介绍如何使用实体嵌入,因为我已经在“ 在Drupal 8中使用Core Media管理媒体资产 ”教程中对此进行了介绍。(这篇文章也会翻译发布)
2.配置了实体嵌入后,创建一个“两列”section。将“列宽”下拉列表设置为“ 25%/ 75%”。
3.单击左侧的“添加区块”,然后单击“创建自定义区块”。
4.使用创建的“实体嵌入”按钮将图像嵌入编辑器。
5.单击右侧的“添加区块”,然后添加一些虚拟文本。
一旦所有区块都就位,您的布局应如下所示:
6.单击保存布局并祝贺您,您已经使用布局生成器模块创建了自定义页面。
总结
我们在本教程中介绍了很多内容。我想向您展示,您可以使用布局生成器来自定义实体布局,也可以将其用作页面生成器。该模块可以代替用于构建复杂页面的段落吗?
这取决于您要赋予编辑器多少灵活性。