2010-08-20 75 views

回答

1

我認爲你所說的四個頁面是節點。主題可以針對不同的內容類型具有不同的模板。
在由template_preprocess_node()做了同樣的方式,模塊可以實現hook_preprocess_node(),並提出不同的模板文件來使用。

// This code is present in template_preprocess_node(). 
// Clean up name so there are no underscores. 
$variables['template_files'][] = 'node-'. $node->type; 

// This is what the module custom_module.module can write in custom_module_preprocess_node(). 
$variables['template_files'][] = 'node-'. $node->uid; 

如果自定義模塊要確保它是在暗示該模板之前其他模板文件選中,那麼它可以採用下面的代碼:

if (isset($variables['template_files']) && is_array($variables['template_files'])) { 
    $variables['template_files'] = array_unshift($variables['template_files'], 'node-'. $node->uid); 
} 

的主題必須有一個模板文件與建議的名稱(node-1.tpl.php爲ID爲1的節點,例如),或使用默認模板文件node.tpl.php。

0

Sections模塊允許您從節點的編輯頁面指定一個主題,每個節點。

它的主要目的是允許每個'節'的主題,所以例如管理員/ *可以使用加蘭,mymicrosite/*可以使用customtheme1,網站的其餘部分可以使用customtheme2,但是你可以創建一個'節-per節點」,這是你正在嘗試在部分發言要做到:0)

+0

我剛剛重新閱讀了這個,並意識到你問'模板',而不是'主題'。然而,如果它仍然有幫助,我會留下我的答案。 – CitrusTree 2010-08-20 19:15:13

1

如果你想爲你的頁面completelly不同的設計(不只是不同的背景,或者內容區域或某事的樣子像這樣),我認爲最好使用頁面模板而不是節點模板。默認情況下,您可以使用模板page-node-nid.tpl.php(用您節點的id替換nid)。

如果你想要的,例如,不同的設計用於特定節點類型 - 你可以在你的template.php使用theme_preprocess_page功能:

function yourtheme_preprocess_page(&$vars, $hook){ 
    $vars['template_files'][] = 'page-'.$vars['node']->type; 
} 

答案有些類似於上面的一個,但關鍵點在於使用頁面模板而不是節點模板(並且預處理頁面而不是預處理節點)。因爲使用節點模板只允許您更改內容的輸出,而頁面模板允許您從<html>標籤開始寫入完整模板。

P.S.在處理主題時不要忘記清除緩存,以防萬一。

相關問題