添加数据输入表单(3)

g089h515r806 的头像
Submitted by g089h515r806 on 星期二, 2009-07-28 12:20

   我们最后要做的就是创建表单,并把它添加到$node对象中。首先,我们需要定义一个表单,这样我们就有了要添加的东西。我们将在annotate.module中的一个单独的函数中完成这件事,它唯一的责任就是定义表单:

Drupal版本:

添加数据输入表单(2)

g089h515r806 的头像
Submitted by g089h515r806 on 星期二, 2009-07-28 12:19

   这个看起来有点复杂,所以让我们详细的分析一下。首先要注意的是,我们在这里实现了Drupal的另一个钩子。这次是nodeapi钩子,在drupal对节点进行各种处理时将会调用该钩子,这样其它的模块(比如我们的)在处理继续往下以前可以修改节点。我们通过变量$node将节点传递过来。注意第一个参数前面的&,这意味着它实际上是对$node对象的一个引用,这点非常好,因为我们在这里对$node所做的任何修改都将被保存下来。由于我们的目标是追加一个表单,所以我们非常高兴地看到我们可以修改节点。

Drupal版本:

添加特定于模块的设置(2)

g089h515r806 的头像
Submitted by g089h515r806 on 星期二, 2009-07-28 12:13

   在Drupal中,表单被表示为一个嵌套的树状结构;也就是说,一个数组的数组。这个结构向Drupal的表单呈现引擎(rendering engine)描述了表单是如何表示的。为了可读性,我们将数组中的每个元素单独成行。每一个表单属性都以”#”开头,并作为数组的键。我们首先声明了表单元素的类型为checkboxes,这意味着通过使用一个带键的数组来构建多个复选框。我们在变量$options中已经得到了带键的数组。

Drupal版本:

添加特定于模块的设置(1)

g089h515r806 的头像
Submitted by g089h515r806 on 星期二, 2009-07-28 12:11

     Drupal有多种不同的节点类型(在用户界面称之为内容类型),比如Story和Page。我们想将注释的使用限定在特定的一些节点类型上。为了实现这一点,我们需要创建一个页面,在里面告诉我们的模块我们想注释哪些节点类型。在该页面,我们将呈现一组复选框,每一个复选框就对应一个已有的内容类型。这样终端用户就可以通过选中或者取消选中复选框(如图2-1所示),就可以决定哪些内容类型可被注释。这样的页面就是一个管理页面,只有在需要的时候才加载和解析合成该页面的代码。因此,我们把代码放在了一个单独的文件中,而不是放在我们的annotate.module文件里,而对于每个web请求,都会加载和运行annotate.module文件。由于我们告诉了Drupal,在文件annotate.admin.inc中查找我们的设置表单,所以创建文件sites/all/modules/custom/annotate/annotate.admin.inc,并向里面添加以下代码:

Drupal版本:

创建相应的文件

g089h515r806 的头像
Submitted by g089h515r806 on 星期二, 2009-07-28 12:08

老葛的Drupal培训班 Think in Drupal

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

Drupal版本:

页面

Subscribe to Think in Drupal RSS