我不是在考虑如何实现现有的钩子,而是创建一个新的类型的钩子。假设钩子hook_node_load()
存在。我想创建像hook_node_preload()
这样的东西,它会在加载节点之前触发。
我已经搜索过,似乎无法找出Drupal代码钩子被解雇的位置。我认为它类似于module_invoke_all()
或类似的东西?但我不确定它的名字在哪里。
答案 0 :(得分:2)
在整个Drupal进程中,Drupal钩子遍布整个地方。没有一个地方可以调用所有钩子。
下面是Drupal核心创建钩子的一些函数列表:
http://api.drupal.org/api/drupal/includes%21module.inc/function/calls/module_invoke_all/7
如果是hook_node_load()
,则会从位于 includes / entity.inc 的entity.inc文件中调用它,位于第334行。
foreach (module_implements($this->entityInfo['load hook']) as $module) {
call_user_func_array($module . '_' . $this->entityInfo['load hook'], $args);
}