module_invoke_all不返回所有模块

时间:2011-02-06 21:38:41

标签: drupal hook

我正在创建一个模块,它为每种内容类型提供单独的节点概述页面。 我的问题在于尝试重新创建节点操作下拉列表。

在节点模块中,这是通过使用'node_operations'钩子调用module_invoke_all函数来完成的。 这将返回实现“node_operations”挂钩的所有模块的数组。 在我的例子中,有以下两个模块:'node'和'nodewords'。

当我在模块中调用module_invoke_all('node_operations')时,它只返回'nodewords'模块,而不是'node'模块。 这是因为'node_node_operations'功能不存在。

任何人都可以解释这种行为吗?

1 个答案:

答案 0 :(得分:0)

看起来钩子在node.admin.inc中,它不会自动包含在内。见http://api.drupal.org/api/drupal/modules--node--node.admin.inc/function/node_node_operations/7

这是一个错误,您应该看看是否已经存在问题,如果没有,请创建一个新问题。

无论如何,作为一种解决方法,您可以在调用钩子之前包含node.admin.inc文件:

<?php
module_load_include('inc', 'node', 'node.admin');
?>

(是的,奇怪的语法;))