本文實(shí)例講述了drupal中hook_theme函數(shù)用法。分享給大家供大家參考。具體如下:
在開(kāi)發(fā)的時(shí)候不免要使用到drupal theme 定義。
舉個(gè)簡(jiǎn)單的例子:
代碼如下:
<?php
function modulename_theme() { //開(kāi)始定義自己的theme 使用api hook_theme
return array( //返回theme 數(shù)組
'hot_news' => array( // 給定義的theme 定義一個(gè)名稱(chēng)
'arguments' => array('title' => null, 'teaser' => null, 'link' => null), //這些都是要傳遞的參數(shù),具體是在使用 theme('hot_news',arg1,arg2,arg3),這時(shí)使用到。
'template' => 'hot_news', //模板名稱(chēng),它會(huì)自動(dòng)搜索hot_news.tpl.php模板文件
'file' => 'get_page.inc', //這個(gè)是定義相關(guān)函數(shù)的文件,根據(jù)需要自行定義。
'path' =>drupal_get_path('module', 'modulename'), //得到文件路徑,如果theme('hot_news',arg)在template.php里面使用,需要告訴drupal具體位置,不定義,如果在template使用,它只能在template.php同目錄下查找。默認(rèn)和主題同目錄。
),
);
?>
每個(gè)參數(shù)都會(huì)寫(xiě)入變量里。 variables.,比如:$variables['title'], $variables['teaser'] and $variables['link'].
接下去就可以使用:
代碼如下:
<?php
$output = theme('hot_news', '這是標(biāo)題','haha,teaser','yes, 這是link');//使用這個(gè)時(shí)候,他會(huì)輸出定義的hot_news.tlp.php模板內(nèi)容樣式。、。
?>
還有一個(gè)功能就是預(yù)處理機(jī)制。
代碼如下:
<?php
function template_preprocess_hot_news(&$variables) {
// $variables['title'] 的值可以使用 $title 在你的hot_news.tpl.php里面輸出
$variables['title'] = '在處理一次,讓它顯示別的title';
$variables['teaser'] = 'strng......';
$variables['link'] = l(eeeee, 'node/'.1);
}
?>
理解hook_theme,就可以自己隨心所欲來(lái)定制自己的theme。感覺(jué)到drupal的強(qiáng)大和靈活了。
總結(jié):
當(dāng)告知drupal使用theme('hook',arg)時(shí), 它需要找到hook_theme的定義,如果沒(méi)有preprocess,那直接把參數(shù)送給你tpl.php文件里。如果有,它就把theme('hook',arg)的來(lái)參數(shù),傳遞給preprocess里面,可以直接用$variables['arg']得到值,看看沒(méi)有重新賦值,如果有,那就使用新的$variables['arg'],最后輸出到tpl.php里面。
希望本文所述對(duì)大家的drupal建站有所幫助。
2025國(guó)考·省考課程試聽(tīng)報(bào)名