我必須使用drupal創建簡單的CMS,它有4個頁面,每個頁面都有獨特的設計。如何爲每個頁面獲取不同的模板
2
A
回答
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)
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.在處理主題時不要忘記清除緩存,以防萬一。
相關問題
- 1. 獲取每個頁面上包含的模板標籤的RequestContext
- 2. 如何爲每個頁面添加不同的頁眉圖像?
- 3. 如何根據模板從頁面獲取頁面參數
- 4. 爲不同的產品頁面製作新的頁面模板
- 5. 在不同的頁面模板上獲得不同的菜單
- 6. 如何爲子頁面分配不同的Joomla模板樣式?
- 7. wordpress functions.php - 爲每個帖子類別使用不同的頁面模板
- 8. 在循環內的單個頁面上獲得不同的頁面模板
- 9. Yii中的不同頁面模板
- 10. magento結賬頁面不同的模板
- 11. 如何在每個頁面上定義模板的圖像?
- 12. Joomla - 爲主頁和其他頁面使用不同的模板
- 13. 如何獲取GAE模板中當前頁面的網址
- 14. 如何獲取Liferay速度模板中的頁面標題
- 15. 如何從MediaWiki上的頁面/模板獲取類別名稱?
- 16. 如何獲取RML模板中的頁面總數?
- 17. 如何使用TCPDF爲每個頁面設置不同的頁眉/頁腳?
- 18. 獲取每個PDF頁面的書籤
- 19. Scrollify獲取每個頁面的動畫
- 20. 如何使用不同的drupal頁面模板?
- 21. Joomla 1.5如何劃分joomla模板並使用不同頁面的頁面
- 22. 如何爲每個聰明模板添加相同的前綴
- 23. 每個頁面的不同子標題
- 24. 每個Wordpress頁面的不同邊欄
- 25. 如何獲得不同的頁面獲取fan_count?
- 26. 如何爲Magento管理面板中的每個用戶設置不同的起始頁面?
- 27. 每100個「贊」獲取Facebook頁面
- 28. 多個Ngview的不同模板頁
- 29. 如何獲取每個子頁面的特定圖像?
- 30. 如何獲取ID到CasperJS頁面上的每個複選框
我剛剛重新閱讀了這個,並意識到你問'模板',而不是'主題'。然而,如果它仍然有幫助,我會留下我的答案。 – CitrusTree 2010-08-20 19:15:13