我創建了一個名爲finder的模塊,我想從url中獲取參數,將它們緊縮,然後通過tpl文件顯示結果。這裏的相關功能...在Drupal模塊回調,預處理和模板之間傳遞數據
function finder_menu()
{
$items = array();
$items['finder'] = array(
'page callback' => 'finder_view',
'access callback' => TRUE,
);
return $items;
}
function finder_theme($existing, $type, $theme, $path)
{
return array(
'finder_view' => array(
'variables' => array('providers' => null),
'template' => 'results',
),
);
}
function finder_preprocess_finder_view(&$variables)
{
// put my data into $variables
}
function finder_view($zipcode = null)
{
// Get Providers from Zipcode
return theme('finder_view', $providers);
}
現在我知道finder_view被調用。我也知道finder_preprocess_finder_view被調用。最後,我知道result.tpl.php正被用於輸出。但我無法圍繞如何在回調中完成有意義的工作,不知何故使預處理器中的數據可用於添加到「變量」,以便我可以在tpl文件中訪問。
在你使用tpl文件的情況下,回調甚至對任何事情都有用嗎?我在過去做過這樣的事情,回調完成所有工作並傳遞給一個主題函數,但是這次我想使用一個文件進行輸出。
謝謝...
UPDATE:這實際上是一個參數命名的問題。 Drupal 6在hook_theme中使用了「參數」鍵,而不是「變量」。一旦改變,一切都按預期工作。我還刪除了預處理器,因爲我的邏輯是在回調中執行的。
在過去,當使用tpl文件時,我在預處理函數中準備好了數據。同樣在那裏,我可以通過將它添加到傳遞給它的變量引用中,在tpl文件中添加我需要的任何數據。但是當我使用模塊回調時,如何將我在那裏做的任何事情傳遞給我的tpl文件?我不關心預處理器,如果我不需要它。 – rob5408 2011-02-02 23:42:04
返回主題('finder_view',$ providers);正是如此。如果將數據格式化爲theme()可以變爲變量的格式,則可以一起跳過預處理函數。 – mirzu 2011-02-03 19:31:33