首頁 > php教程 > php手册 > Drupal模块开发之创建自己的钩子

Drupal模块开发之创建自己的钩子

WBOY
發布: 2016-05-26 08:20:51
原創
1685 人瀏覽過

Drupal可以让第三方模块创建自己的钩子。在通常的实践中,有两种类型的钩子你可能想要创建,一种是内容修改类的钩子,一种是拦截类的钩子。

Drupal的钩子系统允许和模块交互并改变其他模块的逻辑,甚至是改变Drupal核心逻辑。这是一个非常简单的系统,甚至可以让第三方模块创建自己的钩子。在通常的实践中,有两种类型的钩子你可能想要创建,一种是内容修改类的钩子,一种是拦截类的钩子。修改类的钩子提供了一个标准的方法来修改某个特定对象或变量的内容,典型的是使用 drupal_alter()函数。拦截类的钩子可以让第三方模块在模块执行过程中根据条件做出一些动作。

例1:简单调用

<?php
// will call all modules implementing hook_hook_name
module_invoke_all(&#39;hook_name&#39;);
?>
登入後複製

例2:聚合结果

<?php
$result = array();
foreach (module_implements(&#39;hook_name&#39;) as $module) {
// will call all modules implementing hook_hook_name and
// push the results onto the $result array
$result[] = module_invoke($module, &#39;hook_name&#39;);
}
?>
登入後複製

例3:使用 drupal_alter() 改变内容

<?php
$data = array(
&#39;key1&#39; => &#39;value1&#39;,
&#39;key2&#39; => &#39;value2&#39;,
);
// will call all modules implementing hook_my_data_alter
drupal_alter(&#39;my_data&#39;, $data);
?>
登入後複製

例4:引用传参,不能使用 module_invoke

<?php
// @see user_module_invoke()
foreach (module_implements(&#39;hook_name&#39;) as $module) {
$function = $module . &#39;_hook_name&#39;;
// will call all modules implementing hook_hook_name
// and can pass each argument as reference determined
// by the function declaration
$function($arg1, $arg2);
}
?>
登入後複製


教程地址:

欢迎转载!但请带上文章地址^^

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板