2012-10-20 5 views
10

habe ich ein neues Drupal 7 Thema und versuchen hook_theme bei template.php wie folgt umzusetzen:Wie hook_theme in Drupal 7 zu implementieren?

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

dann legte ich header.tpl.php in templates und gelöscht alle Caches und Themen Funktion aufrufen:

theme('mytheme_header', $vars); 

und header.tpl.php gefällt das:

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

ich überprüfen, Firebug und es die Informationen bekommen 'Aufruf Header-Template', bedeutet Es hatte header.tpl.php aufgerufen, aber es hat den HTML-Code nicht gedruckt. Was ist falsch an meinem Code?

Antwort

16

Versuchen Sie, die variables Array in 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, 
      ), 
     ), 
    ); 
} 

In Ihrem header.tpl.php Datei hinzufügen:

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

Dann drucken Sie es wie folgt aus:

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

'arguments' umbenannt wurde zu 'Variablen' in Drupal 7 – Clive

+0

Danke. Ich habe es behoben. :) –

+0

Es war nicht das Problem der Variablen. Ich debugge mit FirePHP und fand heraus, dass es header.tpl.php aufgerufen hat, aber es hat keinen HTML-Code gedruckt. –