如何使Drupal7模块使用theme文件夹中的.tpl.php模板

如何使Drupal7模块使用theme文件夹中的.tpl.php模板,drupal,drupal-modules,drupal-7,drupal-themes,Drupal,Drupal Modules,Drupal 7,Drupal Themes,我已经为Drupal7创建了一个模块,它有一个hook_主题函数,告诉它使用usertemp.tpl.php模板。我把模板放在模块文件夹和主题文件夹中。问题是该函数只从模块文件夹中提取模板,而不是从主题文件夹中提取模板。我已经多次清除缓存,并寻找以前的答案,但没有任何帮助。有什么问题吗 我的hook_主题代码如下所示: function usuar_theme() { return array( 'usuarbuild' => array( 'variables

我已经为Drupal7创建了一个模块,它有一个hook_主题函数,告诉它使用usertemp.tpl.php模板。我把模板放在模块文件夹和主题文件夹中。问题是该函数只从模块文件夹中提取模板,而不是从主题文件夹中提取模板。我已经多次清除缓存,并寻找以前的答案,但没有任何帮助。有什么问题吗

我的hook_主题代码如下所示:

function usuar_theme() {
  return array(
    'usuarbuild' => array(
        'variables' => array('profilesloaded' => array()),
        'template' => 'usertemp',
     ),
  );
}
其余模块代码如下所示:

function usuar_menu() {
    $items['userx'] = array(
       'title' => 'User page',
       'description' => 'User page',
       'page callback' => 'usuar_exe',
       'access callback' => TRUE,
       'type' => MENU_CALLBACK,
     );
     return $items;
}


function usuar_exe($id) {
    $ar = array('uid' => $id, 'profilesloaded' => profile2_load_by_user($id));
    return theme('usuarbuild', array('collected' => $ar));
}

function theme_usuarbuild($variables) {
  return $variables['collected'];
}

这是个棘手的问题,但是。。主题挂钩必须与模板名称匹配。很奇怪,但我在我的本地电脑上测试过,一旦我设置好它,它就工作了。所以将钩子主题()更改为:


并将tpl.php文件更改为usuarbuild.tpl.php(或将所有内容更改为usertemp)。在那之后应该可以工作。

看起来不错,你能在模块中包含你用来调用模板的代码吗?我以为这就是用来调用模板的代码,不是吗?你是说自定义主题函数和页面回调吗?我已经用剩下的模块代码编辑了我的主要帖子。谢谢你的帮助!!
function usuar_theme() {
  return array(
    'usuarbuild' => array(
        'variables' => array('profilesloaded' => array()),
        'template' => 'usuarbuild',
     ),
  );
}