总结

g089h515r806 的头像
Submitted by g089h515r806 on 星期五, 2009-07-31 12:03

    读完本章后,你应该能够

• 理解如何将动作分配给触发器
• 编写一个简单的动作
• 编写一个高级动作和它的相关配置表单。
• 使用动作管理页面,来创建和重命名高级动作的实例。
• 理解什么是上下文
• 理解动作是如何使用上下文来修改它们的行为的。
• 理解动作的存储、取回、和执行。
• 定义你自己的钩子并将它们显示为触发器。
老葛的drupal培训班 Think in Drupal

Drupal版本:

向已有钩子中添加触发器

g089h515r806 的头像
Submitted by g089h515r806 on 星期五, 2009-07-31 12:01

老葛的Drupal培训班 Think in Drupal

有时候,如果你的代码新增了一个操作的话,那么你可能想要在一个已有的钩子上添加触发器。例如,你可能想向nodeapi钩子添加一个操作。假定你编写了一个模块,用来存档旧节点并将其迁移到数据仓库中。由于这个操作是作用于节点的,所以你可能想在nodeapi钩子下面添加一个archive操作,这样对于内容的所有操作,都会显示在触发器界面的同一个标签下。下面的代码用来添加一个额外的触发器:

Drupal版本:

使用hook_hook_info()定义你自己的触发器

g089h515r806 的头像
Submitted by g089h515r806 on 星期五, 2009-07-31 11:59

Drupal是怎么知道,有哪些触发器是可以显示在触发器用户界面的?按照典型的方式,它能够让模块通过钩子声明该模块所实现的钩子。例如,这里是来自comment.module的hook_hook_info()实现。定义触发器描述的地方就是hook_hook_info()的实现:

Drupal版本:

检查上下文

g089h515r806 的头像
Submitted by g089h515r806 on 星期五, 2009-07-31 11:53

将钩子和操作放在上下文中,这一点非常有用。我们举个例子,动作“发送电子邮件”就大量的利用了这一点。这个动作的类型为system,它可以被分配给许多不同的触发器。

Drupal版本:

建立上下文

g089h515r806 的头像
Submitted by g089h515r806 on 星期五, 2009-07-31 11:52

由于我们已经分配了动作,所以当一个新评论被发布时,当前用户将被阻止。让我们仔细的看一下,这里都发生了什么。我们已经知道,Drupal是通过触发钩子来向模块通知特定事件的。在这里触发的就是评论钩子。由于当前是一个新评论正被添加进来,所以当前的特定操作就是insert操作。触发器模块实现了评论钩子。在这个钩子内部,它对数据库进行查询,来获取分配到这个特定触发器上的所有动作。数据库就会将我们分配的动作“阻止当前用户”返回给该钩子。现在,触发器模块就可以执行该动作了,它符合标准的动作函数签名example_action($object, $context)。

Drupal版本:

页面

Subscribe to Think in Drupal RSS