钩子 |
操作 |
触发器名字 |
comment |
insert |
在保存新的评论之后 |
comment |
update |
在更新评论之后 |
comment |
delete |
在删除评论后 |
comment |
view |
当评论正在被注册用户查看时 |
cron |
run |
cron运行时 |
nodeapi |
presave |
当保存新文章或更新文章时 |
nodeapi |
insert |
在保存新文章之后 |
nodeapi |
update |
在更新文章之后 |
nodeapi |
delete |
在删除文章之后 |
nodeapi |
view |
在内容被注册用户查看时 |
taxonomy |
insert |
在将新术语存储到数据库之后 |
taxonomy |
update |
在将更新过的术语存储到数据库之后 |
taxonomy |
delete |
在删除一个术语后 |
user |
insert |
在用户帐户创建之后 |
user |
update |
在用户资料更新之后 |
user |
delete |
在用户被删除之后 |
user |
login |
在用户登录之后 |
user |
logout |
在用户退出之后 |
user |
view |
当用户资料被浏览时 |
下面是代码示例
function beep_action_info() { $info['beep_beep_action'] = array( 'type' => 'system', 'description' => t('Beep annoyingly'), 'configurable' => FALSE, 'hooks' => array( 'nodeapi' => array('view'), 'comment' => array('view', 'insert', 'update', 'delete'), 'user' => array('view', 'insert', 'update', 'delete', 'login'), 'taxonomy' => array('insert', 'update', 'delete'), ), ); return $info; }
该函数的名字为beep_action_info(),在这里,和其它的钩子实现一样,我们使用了:模块名(beep)+钩子名 (action_info)。我们将返回一个数组,数组中的一个条目就对应我们的模块中的一个动作。由于我们只编写了一个动作,所以只有一个条目,它的键 就是执行动作的函数的名字:beep_beep_action()。为了在阅读代码时,方便的识别哪个函数是个动作,我们在我们的beep_beep() 函数的名字后面追加了_action,这样就成了beep_beep_action()。
如果你不想将你的动作限定在特定的触发器或者触发器集上,那么通过以下声明,你的动作就支持所有的触发器了:
/** * Implementation of hook_action_info(). */ function beep_action_info() { $info['beep_beep_action'] = array( 'type' => 'system', 'description' => t('Beep annoyingly'), 'configurable' => FALSE, 'hooks' => array( 'any' => TRUE, ), ); return $info; }