2

drupal如何创建自己的钩子。同样,我想为自己定制一个钩子。我该如何进行?

4

2 回答 2

2

可能是您正在寻找module_invoke_all

一些有用的链接开始:

于 2012-05-13T08:09:09.393 回答
0

如果你有一个通过引用传递参数的钩子,并且你不能使用 drupal_alter(例如一个传入多个参数的 presave 钩子),你可以使用 module_implements。

这样,模块可以将其实现为 modulename_foo_presave 而不是 modulename_presave_alter。当您想让模块在其生命周期的多个点上更改某些内容时,这很有用。

对于 drupal 核心中的示例,请查看 node_validate (drupal 7) 的代码。

foreach (module_implements('node_validate') as $module) {
  $function = $module . '_node_validate';
  $function($node, $form, $form_state);
}

来自http://api.drupal.org/api/drupal/modules%21node%21node.module/function/node_validate/7

如果您想创建可以以这种方式实现的钩子,则相同的方法适用于 Drupal 6。

于 2012-05-14T17:25:50.490 回答