该文件只向Drupal提供你的模块信息,但其中仍然有很多东西值得一看。一个“.info”文件就像对Drupal说“嘿,这有个可以玩的东西。”除非模块被启用,不然Drupal只会读取“.info”文件而忽略模块中的其它东西,直到模块启用为止。对于未启用模块,Drupal模块管理页面(admin/modules)显示的信息,也都是来自“.info”文件。(一旦某个指定的模块被启用,由此模块的代码所定义的帮助、权限、以及配置链接,将会在适当的页面显示出来)。
基本的“.info”指令
.info文件的内容是比较简单和公式化的。我将在接下来的几页讨论许多常用的指令,同时,所有的这些指令都能够在drupal.org/node/542202上找到。以下是一个内容最简单的“.info”文件示例并在其中进行了自我描述假设可以在machine_name.info中发现:
name = Human-readable name of our module
description = Describes what our module does in a sentence or two.
core = 7.x
.info 文件还可以有其它的值,但必需的值只有以上三个。.info 文件内容的语法十分简单:标签=值。它总是由标签(或名称)和值组成,中间用空格隔开,一个等号,再上一个空格。例如,最后的那个指令(或属性),“core”是标签,而“7.x”是它的值。
注意:Drupal 7中,不需要写入“$ID$”。drupal.org之前使用旧的版本控制系统——CVS——需要每一个放置于cvs.drupal.org文件的顶部都包含一个$ID$的注释,当有人再次提交时则会将它替换成提交时间和提交者的名字。现在使用的Git和git.drupal.org,并不需要这个标签,并且Git仍然知道谁在什么时候提交了什么内容。
要使模块在“模块管理”上可用,模块的人类可读名称是必须选中的(然后才能启用)。没有指令用来设置模块的机器名,因为它会使用“.info”文件的文件名,所以从技术上来讲机器名并不是必须的,不过为模块提供description(描述)是模块开发者最基本的礼貌。”core”(内核版本)指令是必须被设置为“7.x”,否则Drupal 7会拒绝使用这个模块。(目前,Drupal不允许模块指定使用特定的小版本,如7.8,但你也可以这样做,不过是通过声明你的模块依赖于某个特定版本的核心模块。马上就将介绍依赖性指令。)
dependencies[]
.info 文件中最常见的一个可选指令就是dependencies[](依赖性)指令,其中列出了你的模块所依赖的所有模块的系统名称。如果你想让前面的例子依赖于Views模块,你可以在“.info”文件里添加这样一行:dependencies[] = views。
你应该只列出直接的依赖关系。例如,Views依赖于CTools,但如果你的模块直接使用CTools,你应该只在你的模块中列出CTools。这可以帮助你避免列出无效(过时)的依赖性。同样的道理,如果你改变了你的模块,使它不再依赖于其它模块,请删除依赖性指令,这样网站建设者就不必再强制安装额外的模块了。
方括号是干什么的?当一个指令可以有多个值时,名称采用数组表示法,在指令后加上[],使它在必要时可以重复使用多次。因此,当有一个既依赖核心的Help(帮助)模块又依赖于贡献的Views模块,它将要重复使用两次dependencies[] 指令,如清单18-4所示。
注意:在Drupal 7中,每个依赖性必须单独列为一行,为你的模块的每个依赖性重复一次dependencies[] = system_name
清单18-4。一个依赖于其他两个模块的模块的“.info”文件
; Require the core Help module and the contrib Views module to be enabled.
dependencies[] = help
dependencies[] = views
清单18-4中的第一行是注释。在.info文件中,使用分号(;)开头的一行会被视为注释。所以“.info”文件中任何以分号开头的行,都将被Drupal忽略。模块的“.info”文件中的注释并不是必须的,因为“.info”文件是如此简单和不言自明。清单18-4接下来的两行是两个依赖关系,使用了Help模块和Views模块的机器名。(请记住,机器名可以与人类可读的名称有很大不同。例如,Views Bulk Operations模块的机器名是vbo。)