2010-10-29 57 views
2

我有一個自定義模塊,可以從Web服務調用中返回數據。它來自一個XML響應,我將其轉換爲一個數組。Drupal主題()函數和自定義模板

一旦我有數組,我做的:

$output = theme('search_srs_results', $data); 
return $output; 

但我得到一個白色的屏幕。沒有apache/php/watchdog錯誤。

我之前在另一個模塊中完成了這個任務,沒有任何困難。我的主題鉤子已定義,並指向一個模板文件,傳遞$ data參數。如果我在它返回之前轉儲$ output,它的NULL。

$數據在主題前肯定有一個填充數組。

如果我做主題('item_list',$ data),它渲染,沒有白屏。

我試着在hook_theme和theme()上再次閱讀文檔,但我似乎沒有做任何錯誤。

下面是主題功能:

/** 
* Implementation of hook_theme() 
*/ 

function srs_finder_theme() { 
    return array(
    'search_srs_results' => array(
     'template' => 'srs-finder-results', 
     'arguments' => array('data' => null), 
    ), 
); 
} 

/** 
* Implementation of hook_preprocess() 
*/ 

function srs_finder_preprocess_search_srs_results(&$vars) { 
    $data = $vars['data']; 
} 

請告訴我缺少什麼?

+0

您是否清除Perfomance頁面中的緩存? – Nikit 2010-10-30 00:09:26

+0

是的,當我開發這個時,我在_init()中有cache_clear_all()。這還不夠嗎? – Kevin 2010-10-30 00:44:56

+2

哪裏有theme_search_srs_results? – Nikit 2010-10-30 03:49:03

回答

3

我不明白你爲什麼需要hook_preprocess()函數。 $data應自動提供給srs-finder-results.tpl.php。那是因爲您在調用theme('src_src_results', $data)時傳遞了此變量,並且您已聲明hook_theme()中有1個參數。

srs-finder-results.tpl.php文件應該位於src_finder模塊文件夾中。你需要爲此實現代碼! (或者如nikit有上述評論,提供theme_search_srs_results功能在這種情況下,你將需要刪除template陣列條目)。

[注:如果模塊的其他用戶希望繞過這一主題模板可隨時爲他們的在主題主題的主題文件夾中自行實現srs-finder-results.tpl.php。]

+0

已經完成了所有工作。我想這是Drupal緩存問題,在確定它關閉並清理了幾次後開始工作。 – Kevin 2010-10-30 18:20:37