如何使Drupal 7模块在主题文件夹中使用.tpl.php模板

时间:2011-06-05 16:25:07

标签: drupal drupal-modules drupal-7 drupal-themes

我为Drupal 7创建了一个模块,它有一个hook_theme函数,告诉它使用usertemp.tpl.php模板。我将模板放在模块文件夹和主题文件夹中。问题是该功能仅从模块文件夹中获取模板,而不是从主题文件夹中获取模板。我已经反复清理了缓存,并寻找以前的答案,但没有任何帮助。可能是什么问题?

我对hook_theme的代码如下所示:

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'];
}

1 个答案:

答案 0 :(得分:8)

这是一个棘手的问题,但是..你的主题钩子必须与你的模板名称相匹配。很奇怪,但是我在我的本地进行了测试,一旦我按照这种方式进行设置就可以了。所以..将你的hook_theme()更改为:

function usuar_theme() {
  return array(
    'usuarbuild' => array(
        'variables' => array('profilesloaded' => array()),
        'template' => 'usuarbuild',
     ),
  );
}

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