Drupal 8 开始,使用 .info.yml 文件来声明模块的名称、描述、兼容性、依赖性等等信息。
.info.yml 文件需要以模块的短名称(机器名)为前缀,以上一节中的 Hello World 模块为例,创建 /modules/custom/hello_world/hello_world.info.yml 文件,示例内容如下:
name: Hello World
type: module
core: 8.x
core_version_requirement: ^8 || ^9
core 属性是较老形式的针对单一大版本内核的兼容声明,core: 8.x 表示支持所有 8.x 版本。core_version_requirement 是支持多版本的声明,core_version_requirement: ^8 || ^9 表示适用于所有 8.7.7 以后版本以及所有 Drupal 9 版本。因为这个属性在 Drupal 8.7.7 之前无法被识别,因此如果需要支持 8.7.7 之前的版本,可以同时保留 core 属性。
以上是声明模块仅需的三项属性,然后便可以在扩展(admin/modules)页面找到并启用、卸载这个模块了。
除此之外,还可以声明其它属性,以下是一个比较完整的示例:
name: Hello World Module
description: Creates a page showing "Hello World".
package: Custom
type: module
core: 8.x
core_version_requirement: ^8 || ^9
dependencies:
- drupal:link
- drupal:views
- paragraphs:paragraphs
- webform:webform (>=8.x-5.x)
test_dependencies:
- drupal:image
configure: hello_world.settings
php: 5.6
hidden: true
required: true
description
: 模块简介package
: 用于对模块进行分组,相同 package 的模块会合并在一起显示在模块管理页面dependencies
: 此模块启用所依赖的模块列表。如需启用此模块,则会提示并自动启用所有依赖模块。内核模块使用 drupal:{module} 格式,非内核模块使用 {module}:{module} 或 {module}:{submodule} 格式。test_dependencies
: 使用 DrupalCI 等自动化测试工具所需的依赖模块。configure
: 如果模块提供了配置表单,可以使用此配置项声明对应路由,这样会在模块管理生成一个齿轮链接,方便用户直接访问模块配置页面。php
: 运行此模块所需的最小PHP版本(通常可不声明)。hidden: true
: 在管理界面隐藏此模块require: true
: 指明此模块必须启用且不可卸载- 特殊属性:如 version 和 project 无需指定,如果发布到 drupal.org,会由打包系统自动生成。