创建相应的文件

老葛的Drupal培训班 Think in Drupal

首先我们要做的是为模块起一个名字。名字“annotate”看起来还是比较合适的—简洁而生动。接着,我们需要找个地方来放置这个模块。我们可以把这个模块放在核心模块所在的目录中去,不过这样的话,我们需要记住哪些是核心模块,哪些是我们的模块,这样一来,就增加了维护成本。让我们把它放在目录sites/all/modules下面,以将其与核心模块区分开来。

    如果sites/all/modules不存在,那么首先需要创建它。接着在sites/all/modules下面在创建一个名为custom的目录,然后在sites/all/modules/custom下面创建一个名为annotate的目录。这样就可以将你开发的自定义模块与你下载的第3方模块区分开了。如果有一天,你需要将你的网站委托给另一个开发者,那么这一点还是很有帮助的,不过是否将它们区分开来,取决于你的决定。我们创建的是一个子目录,而不是一个annotate.module文件,这是因为在我们的模块中,除了模块文件以外,我们还需要一些其它的文件。比如我们需要一个README.txt文件,用来向其他用户解释我们的模块是做什么的,以及如何使用它,还有一个annotate.info文件用来向Drupal提供一些关于我们模块的信息。准备好了吗?现在让我们正式开始。
 我们的annotate.info文件内容如下:
 
; $Id$
name = Annotate
description = Allows users to annotate nodes.
core = 6.x
package = Pro Drupal Development
 
 
这个文件的格式非常简单,在这里一个键对应一个值。我们从版本管理系统(CVS)的标识标签开始。如果我们想和其他用户分享这一模块,通过将它提交到Drupal的第3方模块资源库中,这个值将会被CVS自动替换。接着,我们为Drupal提供了一个名称和一个描述,用来显示在网站的模块管理部分。我们明确的定义了我们的模块所兼容的Drupal主版本;在这里,就是版本6.x。Drupal 6以及以后的版本将不允许启用不兼容的模块。模块是按组来显示的,而组的划分是由包(package)决定的;这样,如果我们有3个不同的模块,它们都有package=Pro Drupal Development,那么它们将被放在同一组中。除了前面所列的这些,我们还可以指定一些可选的值。我们再看一个例子,下面的这个模块,它需要PHP5.2,依赖于论坛和分类模块:
; $Id$
name = Forum confusion
description = Randomly reassigns replies to different discussion threads.
core = 6.x
dependencies[] = forum
dependencies[] = taxonomy
package = "Evil Bob's Forum BonusPak"
php = 5.2
 
注意 你可能会想,为什么我们需要一个单独的.info文件呢?为什么不在我们的主模块中写一个函数来返回这些元数据呢?这是因为在加载模块管理页面时,它将不得不加载并解析每一个模块,不管有没有启用,这比平时需要更多的内存并且可能超出分配给PHP的内存上限。
通过使用.info文件,可以更快的加载信息并使用最小的内存。
 
       现在我们准备好创建一个实际的模块了。在你的sites/all/modules/custom/annotate子目录下面创建一个名为annotate.module的文件。在文件的开始出使用PHP的开始标签和一个CVS标识标签,并紧跟一个注释:
<?php
// $Id$
/**
 * @file
 * Lets users add private annotations to nodes.
 *
 * Adds a text field when a node is displayed
 * so that authenticated users may make notes.
 */
 
    首先,让我们看一下注释的风格。我们从/**开始,在接下来的每一行中缩进一格并以*开头,最后以*/结束。令牌@file意味着在接下来的一行是一个描述,给出这个文件的用途。模块api.module,Drupal的自动化文档提取器和格式器,可以使用这一行描述来找出这个文件的用途。空了一行以后,我们为可能检查(并且改进)我们代码的程序员提供了一个更长的描述。注意,我们在这里有意的不使用结束标签 ?>;这对于PHP来说是可选的,如果包含了它,就可能导致文件的尾部空格问题(参看http://drupal.org/node/545)。
 
注意 为什么我们在这里这么详细的讲述每一个细节?这是因为,如果来自世界各地的成百上千的人开发同一个项目的话,如果大家采用一种标准的方式,将会节省大量的时间。关于Drupal的代码风格的更详细的内容可以从Drupal开发用户手册的“代码标准”一节中找到(http://drupal.org/node/318)。
 
    下面我们要做的就是定义一些设置,这样我们就可以使用一个基于web的表单来选择哪些节点类型可以添加注释。这需要两步。首先我们定义一个路径,用来访问我们的设置。然后我们创建设置表单。

Drupal版本: