2011-06-05 87 views
4

我已經爲Drupal 7創建了一個模塊,該模塊有一個hook_theme函數,它告訴它使用usertemp.tpl.php模板。我將模板放置在模塊文件夾以及主題文件夾中。問題是該函數僅從模塊文件夾中拾取模板,而不是從主題文件夾拾取模板。我已經清除了緩存並查找了以前的答案,但沒有任何幫助。可能是什麼問題呢?如何使Drupal 7模塊在主題文件夾中使用.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']; 
} 
+0

對我來說看起來不錯,你可以包含你用來調用模塊中模板的代碼嗎? – hross 2011-06-05 16:49:22

+0

我以爲這是用來調用模板的代碼,不是嗎?你的意思是自定義主題功能和頁面回調? – 2011-06-05 16:59:20

+0

我已經編輯了我的主要帖子,其餘的模塊代碼。謝謝您的幫助!! – 2011-06-05 17:05:02

回答

8

這是一個棘手的一個,但..你的主題鉤子必須匹配你的模板名稱。奇怪的,但我在我的本地測試了這個,一旦我設置了它,它就工作了。所以..改變你的hook_theme()到:

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

,改變你的tpl.php文件usuarbuild.tpl.php(或改變一切,以USERTEMP)。應該在那之後工作。

+0

是的!你是對的!! – 2011-06-05 21:58:51

+0

非常感謝 – 2011-06-05 21:59:13