Drupal模块代码重用

时间:2012-12-13 13:40:47

标签: drupal drupal-7 drupal-modules code-reuse include-path

我使用node_clone模块效果很好但我的项目中需要使用自定义模块中的node_clone函数。所以我输入以下代码:

module_load_include('inc', 'node_clone', 'clone.pages');

function mymodule_init(){
    clone_node_save(118);
}

该代码返回Fatal error: Call to undefined function clone_node_save()

我的模块按来源分类为标记为我的 contrib 的目录。 Node_save在contrib中,而myModule在我的中。

所以,我按照以下方式修改了代码:

module_load_include('inc', '../../contrib/node_clone', 'clone.pages');

但我得到同样的错误。

有人能突出我做错了吗?

2 个答案:

答案 0 :(得分:5)

使用:

require_once DRUPAL_ROOT . '/sites/all/modules/contrib/node_clone/clone.pages.inc';

来自module_load_include API

  

不要在全局上下文中使用此函数,因为它需要Drupal   要完全自助,请改用require_once DRUPAL_ROOT . '/path/file'

答案 1 :(得分:1)

这有点误导,文件夹名为'node_clone',但模块实际上称为'clone',所以你想要:

module_load_include('inc', 'clone', 'clone.pages');

hook_init()很早就开始运行了,所以如果你手头不需要克隆模块的功能,你最好将代码移到钩子中:

function mymodule_init(){
  module_load_include('inc', 'clone', 'clone.pages');
  clone_node_save(118);
}