钩子
操作
触发器名字
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; }