你现在的位置:首页 > PHP网站建设知识库 > Drupal > 正文

Drupal钩子

钩子允许模块与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
执行周期性的操作