跳转到主要内容
smilelong 提交于 9 March 2012

原文链接:http://api.drupal.org/api/drupal/includes%21module.inc/group/hooks/6

钩子(Hooks)

钩子允许模块与Drupal内核交互

 

Drupal的模块系统是建立在“钩子”(hooks)这个概念上的。一个钩子实际上是一个名为foo_bar()的PHP函数,其中foo代表模块名(它的文件名应该像这样foo.module),bar表示钩子名。每个钩子都有一组定义好的参数和明确的返回类型。

 

想要扩展Drupal,一个模块只需要简单地实现一个钩子。当Drupal想要模块参与系统的运行时,它确定了哪个模块实现了这个钩子,并调用所有被启用并实现了这个钩子的模块。

 

关于所有可用被实现的钩子说明详见下表。其中字符串hook是用来表示模块名的占位符。例如,如果有个模块文件名叫example.module,那么hook_help()这个钩子函数在这个模块中应该定义为example_help()。

  函数和方法    
名称 描述
custom_url_rewrite_inbound custom_url_rewrite_inbound不是一个钩子,它是一个你可以加在settings.php中的函数,可以用来修改请求让它们映射到Drupal的路径。这个函数会在模块加载和菜单系统初始化之前调用。它会修改$_GET['q']的值
custom_url_rewrite_outbound custom_url_rewrite_outbound不是一个钩子,它是一个你可以加在settings.php中的函数,可以用来修改Drupal生成的所有链接。它会被url()函数调用,这个函数会被频繁地调用(每个页面的调用次数都在100+),所以它对性能的要求非常严格。
hook_access 定义访问限制
hook_actions_delete 一个动作(action)被删除后执行的代码
hook_action_info 声明一个或多个Drupal动作的信息
hook_action_info_alter 修改其他模块声明的动作信息
hook_block 声明一个或一组区块(blocks)
hook_boot 执行设置任务,参看hook_init
hook_comment 响应评论操作
hook_cron 执行周期性的操作