drupal如何创建自己的钩子。同样,我想要一个为自己定制的钩子。我该如何进行?
也许你正在寻找module_invoke_all
一些有用的链接可以开始:
- 为您的Drupal模块创建钩子
- 如何使用 module_invoke_all() 调用钩子
如果你有一个通过引用传递参数的钩子,并且你不能使用drupal_alter(例如,传入多个参数的预保存钩子),你可以使用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。