2009-08-25 59 views
0

我在Drupal主題中有點新手,我無法在論壇模塊主題中獲得一個細節。模塊中的Drupal主題功能工作流程

forum.module文件包含控制該模塊是如何主題 並擁有這條線

function forum_theme() { 
...... 
'forum_list' => array(
    'template' => 'forum-list', 
    'arguments' => array('forums' => NULL, 'parents' => NULL, 'tid' => NULL), 
), 

我也看到forum-list.tpl.php文件目錄論壇功能forum_theme,所以我開始懷疑,當這個文件被調用,它從哪裏獲取數據,但是我可以在forum.module中找到這個函數。

function template_preprocess_forum_list(&$variables) 

我錯過了什麼嗎?所以一般來說,我的問題是誰和何時調用自定義註冊的主題功能,如forum_list

回答

0

簡單的答案是,如果你在你的主題目錄中放置mytheme-forum-list.tpl.php(其中mytheme是你的主題的名稱)並定製它,drupal應該選擇它(首先清除緩存)。

這條線template_preprocess_forum調用Drupal主題功能

$variables['forums'] = theme('forum_list', 
           $variables['forums'], 
           $variables['parents'], 
           $variables['tid']); 

這將參考線forum_theme()

'forum_list' => array(
     'template' => 'forum-list', 
     'arguments' => array('forums' => NULL, 'parents' => NULL, 'tid' => NULL), 
    ), 

它告訴模板enging找論壇,list.php的和提供參數。

如果您安裝devel module並打開主題開發者模塊。這將向您展示Drupal在呈現內容時將查找的所有候選模板和函數。

一般來說(但有特殊的例外情況),Drupal會尋找最佳匹配模板並回退到預先定義的函數。

如果沒有匹配的東西。看看theme guide,並在具體的Overriding themable output部分,你也可能會發現hook_theme的利益。