2010-11-27 11 views
0

der Code i in der mytheme template.php setzenDrupal 6 ----- warum Thema() nicht ausgeben kann

function mytheme_theme(){ 
    return array(
     'mytheme_example' => 'example', 
     'argument' => array('myvar' => null), 
    ); 
    } 

der Code i in der node.tpl.php setzen

<?php 
$html = ""; 
$myvar = "hello,world"; 
$html .= theme('mytheme_example', myvar); 

    return $html; 
?> 

der Code i in die example.tpl.php setzen

<div> 
    here is the <b><?php print myvar; ?></b>being created. 
    </div> 

i den Cache gelöscht haben, aber auf der Seite des Knotens Artikel gibt es keine jede Ausgabe über hallo Welt.

ps: welche Dateien kann ich die hook_theme, template.php, Moduldatei verwenden. Gibt es irgendwelche Dateien, die ich diesen Haken benutzen kann?

Antwort

0

Es sieht so aus, als hätten Sie Ihr hook_theme korrekt in template.php deklariert, also glaube ich nicht, dass dies das Problem ist.

Ich habe eine Syntax Problem mit Ihrem node.tpl.php erkennen, sollte es nicht sein:

<?php 
    $vars = array('myvar' => 'hello, world'); 
    $html = theme('mytheme_example', $vars); 
    return $html; 
?> 

Notiere die assoziatives Array mit dem 'myvar' (die Variable in hook_theme erklärt), ist sein als Schlüssel übergeben.

Ein weiterer Punkt, es ist Standard-Praxis, die Vorlagendatei die gleiche wie den Namen des Hooks zu nennen, so würde ich vorschlagen, die Vorlage mytheme-example.tpl.php aufzurufen.

Siehe drupal.org für weitere Informationen

+0

Ich habe den Fehler, auf den Sie hingewiesen haben, geändert, kann aber den Wert von $ myvar nicht ausgeben. – runeveryday

+0

Ich habe die Lösung aktualisiert, um ein assoziatives Array zu reflektieren, da ich glaube, dass dies das Problem ist – wiifm

0

Ich weiß nicht, ob Sie noch dieses Problem gelöst haben.

Ich würde versuchen, mein Thema auf diese Weise zu erklären:

function mytheme_theme(){ 
    return array(
     'mytheme_example' => array(
     'arguments' => array('arguments'=>array()), 
     'template' => 'example', 
     ), 
    } 

Das ist, wie ich in der Regel tun, und es funktioniert auf mir.

+0

Ich habe Ihren Code ausprobiert, aber es gibt immer noch keine Ausgabe. Sie können meinen Code auf Ihrer lokalen Umgebung testen. Danke. – runeveryday