Drupal模块开发之创建自己的钩子
发布:smiling 来源: PHP粉丝网 添加日期:2015-04-04 16:35:23 浏览: 评论:0
Drupal可以让第三方模块创建自己的钩子,在通常的实践中,有两种类型的钩子你可能想要创建,一种是内容修改类的钩子,一种是拦截类的钩子.
Drupal的钩子系统允许和模块交互并改变其他模块的逻辑,甚至是改变Drupal核心逻辑,这是一个非常简单的系统,甚至可以让第三方模块创建自己的钩子,在通常的实践中,有两种类型的钩子你可能想要创建,一种是内容修改类的钩子,一种是拦截类的钩子,修改类的钩子提供了一个标准的方法来修改某个特定对象或变量的内容,典型的是使用 drupal_alter()函数,拦截类的钩子可以让第三方模块在模块执行过程中根据条件做出一些动作.
例1:简单调用,代码如下:
- <?php
- // will call all modules implementing hook_hook_name
- module_invoke_all('hook_name');
- ?>
例2:聚合结果,代码如下:
- <?php
- $result = array();
- foreach (module_implements('hook_name') as $module) {
- // will call all modules implementing hook_hook_name and
- // push the results onto the $result array
- $result[] = module_invoke($module, 'hook_name');
- } //开源软件:phpfensi.com
- ?>
例3:使用 drupal_alter() 改变内容,代码如下:
- <?php
- $data = array(
- 'key1' => 'value1',
- 'key2' => 'value2',
- );
- // will call all modules implementing hook_my_data_alter
- drupal_alter('my_data', $data);
- ?>
例4:引用传参,不能使用 module_invoke,代码如下:
- <?php
- // @see user_module_invoke()
- foreach (module_implements('hook_name') as $module) {
- $function = $module . '_hook_name';
- // will call all modules implementing hook_hook_name
- // and can pass each argument as reference determined
- // by the function declaration
- $function($arg1, $arg2);
- }
- ?>
Tags: Drupal模块 Drupal钩子
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)