Funktion innerhalb einbes Templates

xtratz

Gesperrt
Hallo Leute,

ich verzweifle noch an dem Templatesystem hier.
Hab ein ganz einfaches anhand eines Tutorials hier.

Das t auch Super.

Nur die Navigation, die steckt in einer Funktion und diese bekomme ich einfach nicht ausgegeben.
Sprich die Ausgabe erfolgt immer schon vor dem eigentlichen Funktionsaufruf des Templates.

Ist ja auch logisch, weil die Funktion ein echo entält.
Wie aber schaffe ich es dies zu vermeiden?

Hat jemand ne Idee? Ich hab da auch schon was gelesen wegen return usw. Allerdings kapier ich das nicht.

Hier mal die Funktion:

PHP:
function cat_menue($parent_id,$lcatID)
{
    global $cat_auswahl;
    static $ebene = 0;

    $erg[$ebene] = mysql_query("SELECT * FROM `menu` WHERE `parent_id` = '".$parent_id."'");
    $menge = mysql_num_rows($erg[$ebene]);

    for ($lo=0;$lo<$menge;$lo++) {
        $row = mysql_fetch_row($erg[$ebene]);
        
         if ($ebene > 0) {

         $einruecken = str_repeat("&nbsp;&nbsp;",$ebene);
        }
        
        $menu = '
        <tr><td>
        '.$einruecken.'<a href="index.php?catID='.$lcatID.'|'.$row[0].'">'.$row[1].'</a>
        </td></tr>';
        

         //  echo $menu;
// So bringt er mir jetzt eine Ausgabe, aber eben nur das erste Ergebnis aus der Schleife.
           return $menu;
       
        if ($row[0] == $cat_auswahl[$ebene+1]) {
            $ebene++;
            cat_menue($row[0],$lcatID."|$row[0]");
            $ebene--;
        }
 
    } 

}


Dann hab ich versucht: $tpl_hauptnavigation = cat_menue(0,"");

Das t aber eben nicht.
Gruss

EDIT: So bringt er mir jetzt eine Ausgabe, aber eben nur das erste Ergebnis aus der Schleife.
 
Zuletzt bearbeitet:
Hi,

Anstelle einer direkten (in deinem Fall ungewollten) Ausgabe mit "echo" musst Du in der Funktion einfach nur die Zeichenkette als "return-Wert" zurückgeben.

Beispiel:
PHP:
// Anstelle von
function myFunc() {
  $str = "tu was";
  echo $str;
}

// schreibst Du
function myFunc() {
  $str = "tu was";
  return $str;
}

LG
Andy
 
Zurück