Probleme mit rekursiver Funktion

xtramen01

Erfahrenes Mitglied
Hallo Leute,

ich habe ein kleines Problem mit einer rekursiven Navigation.
Eigentlich funktioniert diese genau so wie sie soll.

Jetzt möchte ich aber in der ersten Ebene und nur in dieser, händisch einen Navigationspunkt hinzufügen der an unterster Stelle erscheinen soll.

Leider wird mir dieser neue Navigationspunkt auch immer in jeder Ebene angezeigt die ich anklicke.

Also so soll es aussehen:

Code:
Punkt 1
Punkt 2
Punkt 3
Punkt X <--- händisch hinzugefügt

Und so sieht es bei mir aus:

Code:
Punkt 1
Punkt X <--- händisch hinzugefügt
Punkt 2
Punkt X <--- händisch hinzugefügt
Punkt 3
Punkt X <--- händisch hinzugefügt

Hat jemand eine Idee was ich falsch mache?

Hier mal der Code der an enstsprechender Stelle kommentiert ist:

PHP:
   function get_navigation($parent_id = '0', $lcatID = NULL){
  
    global $languages_id;
    static $ebene = 0;
    
    $menu = NULL;
    $wert = NULL;
    
    isset($_GET['c']) ? $cid = $_GET['c'] : $cid = NULL;
    
    $cat_auswahl = explode(SEPERATOR,$cid);

    if (!empty($cid)){$cat_auswahl = explode(SEPERATOR,$cid);}

    $sql = tep_db_query("select c.section_id, c.categories_id, cd.categories_name, c.parent_id from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '".$parent_id."' and c.categories_id = cd.categories_id and cd.language_id='" . (int)$languages_id ."'  and (c.section_id = '0' || c.section_id = '".$_SESSION['s']."') order by sort_order, cd.categories_name");
    $menge = tep_db_num_rows($sql);     



    for ($lo=0;$lo<$menge;$lo++)
    {
         $row = tep_db_fetch_array($sql);          

         if ($ebene > 0)
         {
             $_naviClass = 'naviChild';
             }else{
             $_naviClass = 'navi';
         }         

           

         if ($ebene >= 1){$wert = $ebene * 10 + 15 . 'px';}

             $_href = tep_href_link(FILENAME_DEFAULT, 'c='.$lcatID.$row['categories_id']);
             
         if (in_array($row['categories_id'], $cat_auswahl)) {
         
             $menu .= '<div id="'.$_naviClass.'"><a href="'.$_href.'" class="'.$_naviClass.'" style="padding-left:'.$wert.'"><b>'.$row['categories_name'].'</b></a></div>';
             }else{
             $menu .= '<div id="'.$_naviClass.'"><a href="'.$_href.'" class="'.$_naviClass.'" style="padding-left:'.$wert.'">'.$row['categories_name'].'</a></div>';             
		  }   


        if (isset($cat_auswahl[$ebene]) && $row['categories_id'] == $cat_auswahl[$ebene])
         {  
             $catid = $row['categories_id'];             
             $ebene++;
             $menu .=  get_navigation($catid,$lcatID."$catid".SEPERATOR);         
             $ebene--;             

         }
        			  
    }
	     
    // Dies ist der neue manuelle Navigationspunkt welcher an unterster Stelle stehen sollte..... 
    $menu .= '<div id="'.$_naviClass.'"><a href="'.$_href.'" class="'.$_naviClass.'" style="padding-left:'.$wert.'">Punkt X</a></div>';             
		 
    return $menu;
    
}

Freue mich auf einen Vorschlag.
Gruss und Danke
 
Zuletzt bearbeitet:
Du willst das ja nur in der ersten Ebene haben und nicht bei jedem Funktionsaufruf ...
D.h. du solletst prüfen ob du noch ind er ersten Ebene bist;

PHP:
{...}
if($parent_id == 0)
{
    $menu .= 'eigener eintrag';
}

return $menu;
}
 
Zurück