在你的 Drupal 8 模块中启用默认配置
主要主题: 默认配置
概览
在 Drupal 7 中,默认配置(例如内容类型、字段配置、视图等)需要专门的 PHP 代码来进行安装和更新。而在 Drupal 8 中,这些配置与配置管理系统一起存储在 YAML 文本文件中。
例如,配置管理系统负责创建和管理内容类型。你可以通过创建一个命名和结构正确的配置文件,将内容类型与模块一起分发。
示例
创建一个名为 node.type.example_mytype.yml
的文件,并将其放置在你的模块目录下的 config/install
子目录中。例如,如果模块位于 /modules/example
,那么该文件路径就是 /modules/example/config/install/node.type.example_mytype.yml
。
请遵守命名约定:在内容类型前加上模块机器名作为前缀,并用下划线分隔,以避免与其他配置文件冲突。
然后在该文件中写入以下代码:
type: example_mytype name: Example description: '使用 <em>example</em> 内容来更好地学习 Drupal 8 开发。' help: '' new_revision: false display_submitted: true preview_mode: 1 status: true langcode: en
参见 node.type.article.yml 作为实际示例。
你也可以用同样的方式为其他内容启用默认配置,例如区块放置、视图、文本格式、编辑器配置、用户角色等等。
你还可以为表单字段(例如节点作者字段)设置默认值。
如果你在添加该内容类型之前已经安装了模块,那么需要先卸载再重新安装模块,配置才能生效。
导出配置
你可以通过 配置 > 开发 > 配置同步 来创建这些文件。你可以使用「单个导入/导出」功能来导出单个配置片段,此时会提供一个文本区域,包含代码供你复制/粘贴到配置文件中。或者你可以执行「完全导出」,下载一个包含所有配置文件的 tar.gz 压缩包。
在使用导出的配置时,重要的一点是要删除配置中的 UUID。每个配置片段都由该 ID 唯一标识。如果你在模块中包含这个 UUID,那么所有使用该模块的网站都会使用相同的 ID,从而失去唯一性。如果你删除这行配置,Drupal 会在启用模块时生成新的 UUID,从而保证唯一性。
uuid: 626187e6-2176-4a73-8900-c0912580e4a1 < < 删除这一行! langcode: en status: true
Drupal Console
Drupal Console 工具提供了以下命令:
它会执行以下任务:
- 导出与指定内容类型相关的所有配置文件(包括字段配置文件)。
- 将其放置到指定模块的配置目录中。
因此,它节省了上文中手动处理所需的大量工作。