2012-10-20 33 views
10

Yeni drupal 7 tema oluşturulur ve bunun gibi template.php de hook_theme uygulamaya çalışırken: drupal 7'de hook_theme nasıl uygulanır?

function mytheme_theme($existing, $type, $theme, $path){ 
    return array(
     'mytheme_header'=>array(
      'template'=>'header', 
      'path'=>$path.'/templates', 
      'type'=>'theme', 
     ), 
    ); 
} 

sonra şablonları dizine header.tpl.php yerleştirilir ve tüm önbelleklerini temizlenir ve tema işlevini çağırır:

theme('mytheme_header', $vars); 

ve header.tpl.php bunu beğendi:

<?php 
fb('calling header template');//the function of FirePHP to output debug info 
print '<div>Header</div>'; 
//... 

Ben Kundakçı kontrol edin ve bilgi 'başlık şablonu çağırarak' get, bu demek header.tpl.php adını vermişti, ancak html kodunu yazmamıştı. Kodumun nesi var?

cevap

16

deneyin sizin header.tpl.php dosyasında hook_theme

function mytheme_theme($existing, $type, $theme, $path){ 
    return array(
     'mytheme_header' => array(
      'template' => 'header', 
      'path' => $path . '/templates', 
      'type' => 'theme', 
      'variables' => array(
       'title' => NULL, 
       'some_text' => NULL, 
      ), 
     ), 
    ); 
} 

yılında variables diziyi eklemek için:

<h1><?php print $title; ?></h1> 
<p><?php print $some_text; ?></p> 

Sonra böyle çıktısını:

$vars = array(); 
$vars['title'] = "This is a title"; 
$vars['some_text'] = "Some text..."; 
print theme('mytheme_header', $vars); 
+1

'arguments' değiştirildi Drupal 7 – Clive

+0

'da 'değişkenlere' teşekkürler. Onu tamir ettim. :) –

+0

Değişkenlerin problemi değildi. FirePHP ile hata ayıkladım ve bunun header.tpl.php adını verdiğini buldum, ancak herhangi bir html kodu basmadı. –