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

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

WBOY
Lepaskan: 2016-05-26 08:20:51
asal
1704 orang telah melayarinya

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

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

例1:简单调用

<?php
// will call all modules implementing hook_hook_name
module_invoke_all(&#39;hook_name&#39;);
?>
Salin selepas log masuk

例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;);
}
?>
Salin selepas log masuk

例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);
?>
Salin selepas log masuk

例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);
}
?>
Salin selepas log masuk


教程地址:

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

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Cadangan popular
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan