Drupal 8 模块的命名与放置规则
在开始之前
如果你希望 PHP 在测试站点上帮助你发现错误,请尝试此处描述的设置:开发时显示所有错误。
为你的模块命名
创建模块的第一步是为它选择一个“简短名称”或机器名(machine name)。该机器名将在模块的多个文件和函数中使用,Drupal 核心也会在程序中使用该名称来识别你的模块。
在选择机器名时,需要遵循以下几个重要规则:
- 必须以字母开头。
- 只能包含小写字母和下划线。
- 不能包含空格。
- 必须是唯一的。你的模块名称不能与网站上使用的其他模块、主题或安装配置文件相同。
- 不得使用保留字:
src
、lib
、vendor
、assets
、css
、files
、images
、js
、misc
、templates
、includes
、fixtures
、Drupal
在本例中,我们选择 “hello_world” 作为机器名。
重要提示:不要在模块的机器名中使用大写字母,否则 Drupal 将无法识别你的钩子(hook)实现。参见 理解 Drupal 模块的钩子系统。
为你的模块创建文件夹
既然我们选择了机器名 “hello_world”,就可以开始创建模块文件夹。在你的 Drupal 安装中创建以下路径的文件夹:/modules/custom/hello_world 或 /sites/all/modules/hello_world。你也可以省略 /custom 子目录,直接将模块放在 /modules/hello_world 文件夹中。但通常最好为自定义模块保留一个专用位置,以便与从 Drupal.org 下载的其他模块区分开来。
请注意,模块文件夹的名称不必与机器名完全相同。例如,你可以将文件夹命名为 HelloWorld。但要记住,在代码和文件名中必须始终使用机器名。
早期版本的 Drupal 要求自定义模块放在 /sites/all/modules 中,因为核心模块位于 /modules。然而,在 Drupal 8 中,/modules 文件夹现在可供你放置自定义和附加模块使用。所有核心模块和库文件都位于 /core 目录中。你仍然可以像 Drupal 7/6 那样将自定义模块和从 Drupal.org 下载的模块放在 /sites/all/modules 中,但直接放在 /modules 目录下也具有相同效果。
我们的示例模块目前尚未运行,接下来我们需要创建 .info.yml 文件。了解更多内容请参阅 如何通过 .info.yml 文件让 Drupal 8 识别你的模块。我们将在后面的教程中启用该模块。
编码标准
强烈建议在编写自定义模块时遵循 Drupal 编码标准。这是对任何核心代码变更提案的要求,也是 drupal.org 上托管代码的推荐做法。