Hauptnavigation: 1.+2. Ebene ausgeben

Gesperrt
notaus
Beiträge: 98
Registriert: Di 13. Dez 2005, 14:18
Kontaktdaten:

Hauptnavigation: 1.+2. Ebene ausgeben

Beitrag von notaus »

Hallo zusammen,

ich möchte eine Navigation, ähnlich einer Sitemap, ausgeben. Dort soll immer die 1. und 2. Ebene mit ausgegeben werden. Als Ausgang hab ich mir das Hauptnavigationsmodul mit Templatemechanismus gewählt.

Ich befinde mich gerade in Nav2/Subnav2-2 und möchte eine Struktur wie diese ausgeben:

Nav1
-Subnav1-1
-Subnav1-2
Nav2 (on)
-Subnav2-1
-Subnav2-2 (on)
Nav3
-Subnav3-1
-Subnav3-2
-Subnav3-3
....

(also immer die 1. und 2. Ebene ausgeben, mit aktuell gewählten markiert)

Das modifizierte Script unten gibt aber aus:
Nav1
Nav2 (on)
-Subnav2-1
-Subnav2-2 (on)
Nav3
....

Nav1 u. Nav3 sollen auch ausgeklappt sein.

Kann mir wer weiterhelfen? Ich steh auf dem Schlauch...

Viele Grüße



Code: Alles auswählen

<?php 

#System properties in use: 
#Type: navigation, Name: idcat_homepage 
#Contains idcat of tree to be displayed in main navigation 

#Includes 
cInclude("frontend", "includes/functions.navigation.php"); 

#If no tree is selected, use client setting 

if ($start_cat=='') { 
    $cApiClient = new cApiClient($client); 
   $start_cat = $cApiClient->getProperty('navigation','idcat_homepage'); 

} 

if ( !is_object($db2) ) { 
    $db2 = new DB_Contenido; 
} 

/** 
 * Check if a category is child 
 * of another category 
 * 
 * @return boolean true/false 
 * @author Jan Lengowski <Jan.Lengowski@4fb.de> 
 * @copyright four for business AG 2003 
 */ 
function catIsChildOf($id, $idparent) { 

    global $cfg, $client, $lang; 

    $db = new DB_Contenido; 

    $parent = $id; 

    while ( $parent != 0 ) { 

        $sql = "SELECT 
                    a.parentid 
                FROM 
                    ".$cfg["tab"]["cat"]." AS a, 
                    ".$cfg["tab"]["cat_lang"]." AS b 
                WHERE 
                    a.idclient  = '".$client."' AND 
                    b.idlang    = '".$lang."' AND 
                    a.idcat     = b.idcat AND 
                    a.idcat   = '".$parent."'"; 

        $db->query($sql); 
        $db->next_record(); 

        $parent = $db->f("parentid"); 

        if ($parent == $idparent) { 
            return true; 
        } 

    } 

    return false; 

} 

if ( catIsChildOf($idcat, $start_cat) ) { 
    $sel_idcat = $idcat; 
} else { 
    $sel_idcat = $start_cat; 
} 

/* Include Template Class */ 
include_once($cfg["path"]["contenido"] . 'classes/class.template.php'); 

/** 
 * Array storing alle the 
 * navigation data 
 */ 
$navitems = array(); 


/* Template Instance */ 
$tpl = new Template; 

/** 
 * Recursive function for creating 
 * the navigation array 
 * @param Int $idcat Category id 
 */ 



function nav($idcat) { 

        global $navitems, $client, $lang, $cfg, $start_cat,$count; 
        $db  = new DB_Contenido; 
        $db2 = new DB_Contenido; 

        $sql = "SELECT parentid FROM ".$cfg["tab"]["cat"]." WHERE idcat = '$idcat'"; 

        $db->query($sql); 
        $db->next_record(); 

        $parentid = $db->f("parentid"); 

        if ( $parentid == 0 ) { 

           if ( $idcat != $start_cat ){ 
        
                $navitems = array(); 
              
                $sql = "SELECT 
                            A.idcat, 
                            C.name 
                        C.public, 
                        C.idcatlang 
                        FROM 
                            ".$cfg["tab"]["cat_tree"]." AS A, 
                            ".$cfg["tab"]["cat"]." AS B, 
                            ".$cfg["tab"]["cat_lang"]." AS C 
                        WHERE 
                            A.idcat     = B.idcat   AND 
                            B.idcat     = C.idcat   AND 
                            B.idclient  = '$client' AND 
                            C.idlang    = '$lang'   AND 
                            C.visible   = '1'       AND 
                            B.parentid  = '".$start_cat."' 
                        ORDER 
                            BY A.idtree"; 

                      $db->query($sql); 

                      while ($db->next_record()) { 

                            /* Check for external redirects... */ 
                            $sql = "SELECT 
                                        a.external_redirect AS ext, 
                                        a.idartlang AS idartlang 
                                    FROM 
                                        ".$cfg["tab"]["art_lang"]." AS a, 
                                        ".$cfg["tab"]["cat_art"]." AS b, 
                                        ".$cfg["tab"]["cat"]." AS c 
                                    WHERE 
                                        b.idcat     = '".$db->f("idcat")."' AND 
                                        c.idclient  = '".$client."' AND 
                                        c.idcat     = b.idcat AND 
                                        a.idart     = b.idart AND 
                                        a.idlang    = '".$lang."'"; 

                            $db2->query($sql); 
                            $flag = false; 

                     while ($db2->next_record()&&!$flag) { 

                               if (isStartArticle($db2->f("idartlang"), $db->f("idcat"), $lang)) 
                               { 

                           $flag = true; 
                                   $target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank'; 
    
                                   $navitems[$db->f("idcat")] = array("idcat"      => $db->f("idcat"), 
                                                                       "name"      => $db->f("name"), 
                                                                       "target"    => $target, 
                                                                 "public" => $db->f("public"), 
                                                                 "navpos" => "pos", 

                                                                "idcatlang" => $db->f("idcatlang")); 
                               } 
                     } 
                      } 

           } 

           return true; 
        } 

        $sql = "SELECT 
                    A.idcat, 
                    C.name, 
                  C.public, 
                    C.idcatlang 
                FROM 
                    ".$cfg["tab"]["cat_tree"]." AS A, 
                    ".$cfg["tab"]["cat"]." AS B, 
                    ".$cfg["tab"]["cat_lang"]." AS C 
                WHERE 
                    A.idcat     = B.idcat   AND 
                    B.idcat     = C.idcat   AND 
                    B.idclient  = '$client' AND 
                    C.idlang    = '$lang'   AND 
                    C.visible   = '1'       AND 
                    B.parentid  = '$parentid' 
                ORDER BY 
                    A.idtree"; 

        $db->query($sql); 

        while ($db->next_record()) { 

                /* Check for external redirects... */ 
                $sql = "SELECT 
                            a.external_redirect AS ext, 
                            a.idartlang AS idartlang 
                        FROM 
                            ".$cfg["tab"]["art_lang"]." AS a, 
                            ".$cfg["tab"]["cat_art"]." AS b, 
                            ".$cfg["tab"]["cat"]." AS c 
                        WHERE 
                            b.idcat     = '".$db->f("idcat")."' AND 
                            c.idclient  = '".$client."' AND 
                            c.idcat     = b.idcat AND 
                            a.idart     = b.idart AND 
                            a.idlang    = '".$lang."'"; 

                $db2->query($sql); 
            $flag = false; 
                while ($db2->next_record() && !$flag) { 
                   if (isStartArticle($db2->f("idartlang"), $db->f("idcat"), $lang)) 
                   { 
                  $flag = true; 
                       $target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank'; 
                       
                       $tmp_nav[$db->f("idcat")] = array("idcat"   => $db->f("idcat"), 
                                                         "name"    => $db->f("name"), 
                                                          "public" => $db->f("public"), 
                                                  "idcatlang" => $db->f("idcatlang"), 
                                                         "target"  => $target); 
 
} 



            } 

  
        } 
        
$tmp_nav[$idcat]["sub"] = $navitems; 
$navitems = $tmp_nav;                 


        /* Function call */ 


nav($parentid);

}  // end function 

$sql = "SELECT 
            A.idcat, 
            C.name, 
          C.public, 
             C.idcatlang 
        FROM 
            ".$cfg["tab"]["cat_tree"]." AS A, 
            ".$cfg["tab"]["cat"]." AS B, 
            ".$cfg["tab"]["cat_lang"]." AS C 
        WHERE 
            A.idcat     = B.idcat   AND 
            B.idcat     = C.idcat   AND 
            B.idclient  = '$client' AND 
            C.idlang    = '$lang'   AND 
            C.visible   = '1'       AND 
            B.parentid  = '$sel_idcat' 
        ORDER BY 
            A.idtree"; 

$db->query($sql); 

while ( $db->next_record() ) { 

        /* Check for external redirects... */ 
        $sql = "SELECT 
                    a.external_redirect AS ext, 
                    a.idartlang AS idartlang 
                FROM 
                    ".$cfg["tab"]["art_lang"]." AS a, 
                    ".$cfg["tab"]["cat_art"]." AS b, 
                    ".$cfg["tab"]["cat"]." AS c 
                WHERE 
                    b.idcat     = '".$db->f("idcat")."' AND 
                    c.idclient  = '".$client."' AND 
                    c.idcat     = b.idcat AND 
                    a.idart     = b.idart AND 
                    a.idlang    = '".$lang."'"; 

        $db2->query($sql); 
        #$db2->next_record(); 
      $flag = false; 
            while ($db2->next_record()&&!$flag) { 

           if (isStartArticle($db2->f("idartlang"), $db->f("idcat"), $lang)) 
           { 
       
            $flag = true; 
               $target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank'; 
       
               $navitems[$db->f("idcat")] = array("idcat"  => $db->f("idcat"), 
                                                  "name"   => $db->f("name"), 
                                                  "public" => $db->f("public"), 
                                            "idcatlang" => $db->f("idcatlang"), 
                                                        "target" => $target); 
           } 
      } 
} 

/* Create Navigation Array */ 
if(($sel_idcat=='')||($sel_idcat=='0')){ 
    $cApiClient = new cApiClient($client); 
    $sel_idcat = $cApiClient->getProperty('navigation', 'idcat_homepage'); 
} 

nav($sel_idcat); 

/* Start Output buffer */ 
ob_start(); 

$navpos=0;

foreach ($navitems as $key => $data) { 

   if (checkCatPermission($data['idcatlang'],$data['public'])) { 
           
         $tpl->reset(); 
                  $navpos++;
                  echo "<span class='menp'><div class='"."aussen".$navpos."'>";
                  $tpl->set('d', 'NAME',  $data['name']); 
                  $tpl->set('d', 'TARGET', $data['target']); 

                  $tpl->set('d', 'HREF',  $sess->url('front_content.php?idcat='.$data['idcat'])); 
                  $tpl->next(); 
                  if ($idcat == $data['idcat']) { 
                      $tpl->generate('templates/navfirst_on.html'); 
               }elseif(is_array($data['sub'])){ 
                    $tpl->generate('templates/navfirst_open.html'); 
                  } else { 
                      $tpl->generate('templates/navfirst_off.html'); 
                  } 


       /* 2. Navigation level */ 

       if (is_array($data['sub'])) { 

           foreach ($data['sub'] as $key => $data) { 

            if (checkCatPermission($data['idcatlang'],$data['public'])) { 
                  $tpl->reset(); 
                  $tpl->set('d', 'NAME',  $data['name']); 
                  $tpl->set('d', 'TARGET', $data['target']); 
                  $tpl->set('d', 'HREF',  $sess->url('front_content.php?idcat='.$data['idcat'])); 
                  $tpl->next(); 

                  if ($idcat == $data['idcat']) { 
                      $tpl->generate('templates/navsecond_on.html'); 
               }elseif(is_array($data['sub'])){ 
                    $tpl->generate('templates/navsecond_open.html'); 
                  } else { 
                      $tpl->generate('templates/navsecond_off.html'); 
                  } 


               } // end if 


           } // end foreach 

          } // end if 
    } // end if 
echo "</div></span>";
} // end foreach           



/* Read out buffer */ 
$html = ob_get_contents(); 

/* Clean buffer */ 
ob_end_clean(); 

/* Output buffer-contents */ 
echo $html; 
?>
notaus
Beiträge: 98
Registriert: Di 13. Dez 2005, 14:18
Kontaktdaten:

Beitrag von notaus »

Hat sich erledigt.
Habe die Hauptnav der 4.8.7 genommen und modifiziert.

Grüße
Supporter
Beiträge: 124
Registriert: Mo 12. Mai 2008, 14:21
Wohnort: In the middle of something...
Kontaktdaten:

Beitrag von Supporter »

Kannst Du Deinen modifizierten Code hier vieleicht posten? Ich könnte Ihn gebrauchen...
Ειμαστε στη μεση απο κατι...
matt.loker
Beiträge: 203
Registriert: Mo 7. Mai 2007, 09:05
Kontaktdaten:

Beitrag von matt.loker »

Ja den könnte ich auch gut gebrauchen!

Grüße
Matt
Pepe G.
Beiträge: 26
Registriert: Mo 16. Aug 2004, 20:52
Kontaktdaten:

Beitrag von Pepe G. »

matt.loker hat geschrieben:Ja den könnte ich auch gut gebrauchen!

Grüße
Matt
Um auch die 2. Ebene anzeigen zu lassen, einfach
Zeile 55
if ($bShowSubcatLevel2 === true && $oSubCatsLevel2->count() > 0) {

ändern in:
if ($oSubCatsLevel2->count() > 0) {

So wird nur überprüft ob der 2. level Inhalt hat und nicht ob es auch die aktive Kategorie ist.
matt.loker
Beiträge: 203
Registriert: Mo 7. Mai 2007, 09:05
Kontaktdaten:

Beitrag von matt.loker »

Pepe G. hat geschrieben:
matt.loker hat geschrieben:Ja den könnte ich auch gut gebrauchen!

Grüße
Matt
Um auch die 2. Ebene anzeigen zu lassen, einfach
Zeile 55
if ($bShowSubcatLevel2 === true && $oSubCatsLevel2->count() > 0) {

ändern in:
if ($oSubCatsLevel2->count() > 0) {

So wird nur überprüft ob der 2. level Inhalt hat und nicht ob es auch die aktive Kategorie ist.
Vielen Dank Pepe G. für deine Hilfe. Sie hat mich einen großen Schritt weiter gebracht.

Vielleicht kannst du mir bei meinen beiden anderen Probleme auch noch helfen. Ich grüble da schon eine Ewigkeit drüber aber bekomme es nicht hin.
Problem 1. Ich möchte, dass die erste eine Ebene tiefer ausgegeben wird. Ich bekomme es einfach nicht hin.
Problem 2. Ich benötige eine zusätzliche ausgegebene Ebene in dem Menü

Ich weis, dass das das Menü aus der 4.8 ist aber dein Lösungsansatz hat da auch geklappt.
Ich hoffe du oder jemand anders kann mir bei den beiden Problemen helfen. Wär euch echt suuuuper dankbar.

Vielen Dank schonmal

Grüße
Matt

Code: Alles auswählen

<?php
// include Contenido_FrontendNavigation class
cInclude('classes', 'Contenido_FrontendNavigation/Contenido_FrontendNavigation.class.php');
cInclude('classes', 'Contenido_FrontendNavigation/Contenido_FrontendNavigation_Breadcrumb.class.php');

// get start idcat
$iIdcatStart = getEffectiveSetting('navigation', 'idcat-home', 4);

// instantiate 2nd + 3rd template object, reset all
$tpl2 = new Template();
$tpl3 = new Template();
$tpl4 = new Template();
$tpl5 = new Template();

if (!isset($tpl) || !is_object($tpl)) {
   $tpl = new Template();
}

$tpl->reset();
$tpl2->reset();
$tpl3->reset();
$tpl4->reset();
$tpl5->reset();

$debug = false;

// build navigation
try {
   $oFeNav = new Contenido_FrontendNavigation($db, $cfg, $client, $lang, $cfgClient);
   $oBreadcrumb = new Contenido_FrontendNavigation_Breadcrumb($db, $cfg, $client, $lang, $cfgClient);
   $aBreadcrumb = $oBreadcrumb->getAsArray($idcat, 4); // this nav starts at level 1
   $oFeNav->setAuth($auth); // to make sure user sees what he's allowed to see
   $oContenidoCategories = $oFeNav->getSubCategories($iIdcatStart, true, true, 6);
   if ($oContenidoCategories->count() > 0) {
      
     # toTplArt($tpl, 'Home', ($idart == 1 ? ' class="active"': ''), '');
      foreach ($oContenidoCategories as $oContenidoCategory) {
         $sSubcats = '';
         $tpl2->reset();
         $bHasActiveSubCat = false;
         // check if we need to load subcategories
         $oSubCatsLevel2 = $oFeNav->getSubCategories($oContenidoCategory->getIdCat(), true);
         $aSubCatsLevel2 = $oFeNav->getSubCategories($oContenidoCategory->getIdCat(), false);
         $bShowSubcatLevel2 = (intval($idcat) == $oContenidoCategory->getIdCat() || in_array(intval($idcat), $aSubCatsLevel2) || in_array($oContenidoCategory->getIdCat(), $aBreadcrumb) || (isset($aBreadcrumb[2]) && intval($idcat) == $aBreadcrumb[2] && in_array($aBreadcrumb[1], $aSubCatsLevel2))) ? true : false;

         if ($debug) {
            print_r($aBreadcrumb);
            print ($idcat);
         }

         if ($debug) {
            #print "....".in_array(intval($idcat), $aSubCatsLevel2)."<br>";
            #print "<pre>";
            #print_r($aSubCatsLevel2);
            #print "</pre>";
            print "TRACE showSubCatLevel2:".$bShowSubcatLevel2." - $oContenidoCategory->getIdCat()".$oContenidoCategory->getIdCat()." - breadcrumb[2]:".$aBreadcrumb[2]." - idcat:".$idcat." - NAME:".$oContenidoCategory->getCategoryLanguage()->getName()."<br/>";
         }
		 if ($oSubCatsLevel2->count() > 0) { 
         #if ($bShowSubcatLevel2 === true && $oSubCatsLevel2->count() > 0) {
            foreach ($oFeNav->getSubCategories($oContenidoCategory->getIdCat(), true) as $oSubCategory) {
               $sSubcats2 = '';
               $tpl3->reset();
               $bHasActiveSubSubCat = false;
               // check if we need to load subsubcategories
               $oSubCatsLevel3 = $oFeNav->getSubCategories($oSubCategory->getIdCat(), true);
               $aSubCatsLevel3 = $oFeNav->getSubCategories($oSubCategory->getIdCat(), false);
               //$bShowSubcatLevel3 = (intval($idcat) == $oSubCategory->getIdCat() || in_array(intval($idcat), $aSubCatsLevel3))? true : false;
               $bShowSubcatLevel3 = (intval($idcat) == $oSubCategory->getIdCat() || in_array(intval($idcat), $aSubCatsLevel3) || in_array($oSubCategory->getIdCat(), $aBreadcrumb) || (isset($aBreadcrumb[3]) && intval($idcat) == $aBreadcrumb[3] && in_array($aBreadcrumb[2], $aSubCatsLevel3))) ? true : false;

               if ($debug) {
                  print "TRACE showSubCatLevel3:".$bShowSubcatLevel3." - breadcrumb[3]:".$aBreadcrumb[3]." - idcat:".$idcat." - NAME:".$oSubCategory->getCategoryLanguage()->getName()."<br/>";
               }

               if ($bShowSubcatLevel3 === true && $oSubCatsLevel3->count() > 0) {
                  // foreach ($oSubCatsLevel3 as $oSubSubCategories) {
                  foreach ($oFeNav->getSubCategories($oSubCategory->getIdCat(), true) as $oSubSubCategories) {
                     $sSubcats3 = '';
                     $tpl4->reset();
                     $bHasActiveSubSubSubCat = false;
                     // check if we need to load subsubcategories
                     $oSubCatsLevel4 = $oFeNav->getSubCategories($oSubSubCategories->getIdCat(), true);
                     $aSubCatsLevel4 = $oFeNav->getSubCategories($oSubSubCategories->getIdCat(), false);
                     //$bShowSubcatLevel4 = (intval($idcat) == $oSubSubCategories->getIdCat() || in_array(intval($idcat), $aSubCatsLevel4)) ? true : false;
                     $bShowSubcatLevel4 = (intval($idcat) == $oSubSubCategories->getIdCat() || in_array(intval($idcat), $aSubCatsLevel4) || (isset($aBreadcrumb[4]) && intval($idcat) == $aBreadcrumb[4] && in_array($aBreadcrumb[3], $aSubCatsLevel4))) ? true : false;
                     
                     $showSubLevels4a5 = true;
                     if ($aBreadcrumb[0] == 19 || $aBreadcrumb[0] == 35 || $aBreadcrumb[0] == 48 || $aBreadcrumb[0] == 72) {
                        $showSubLevels4a5 = false;
                     }
                     
                     if ($debug) {
                        print "TRACE showSubCatLevel4:".$bShowSubcatLevel4." - breadcrumb[4]:".$aBreadcrumb[4]." - idcat:".$idcat." - NAME:".$oSubSubCategories->getCategoryLanguage()->getName()."<br/>";
                     }

                     if ($bShowSubcatLevel4 === true && $oSubCatsLevel4->count() > 0) {
                        foreach ($oFeNav->getSubCategories($oSubSubCategories->getIdCat(), true) as $oSubSubSubCategories) {
                           $sSubcats4 = '';
                           $tpl5->reset();
                           $bHasActiveSubSubSubSubCat = false;
                           // check if we need to load subsubcategories
                           $oSubCatsLevel5 = $oFeNav->getSubCategories($oSubSubSubCategories->getIdCat(), true);
                           $aSubCatsLevel5 = $oFeNav->getSubCategories($oSubSubSubCategories->getIdCat(), false);
                           $bShowSubcatLevel5 = (intval($idcat) == $oSubSubSubCategories->getIdCat() || in_array(intval($idcat), $aSubCatsLevel5)) ? true : false;

                           if ($bShowSubcatLevel5 === true && $oSubCatsLevel5->count() > 0) {

                              foreach ($oSubCatsLevel5 as $oSubSubSubSubCategories) {
                                 if ($bHasActiveSubCat === false && intval($idcat) == $oSubSubSubSubCategories->getIdCat()) {
                                    $bHasActiveSubCat = true;
                                 }
                                 if ($bHasActiveSubSubCat === false && intval($idcat) == $oSubSubSubSubCategories->getIdCat()) {
                                    $bHasActiveSubSubCat = true;
                                 }
                                 if ($bHasActiveSubSubSubCat === false && intval($idcat) == $oSubSubSubSubCategories->getIdCat()) {
                                    $bHasActiveSubSubSubCat = true;
                                 }
                                 if ($bHasActiveSubSubSubSubCat === false && intval($idcat) == $oSubSubSubSubCategories->getIdCat()) {
                                    $bHasActiveSubSubSubSubCat = true;
                                 }

                                 #print "TRACE: LEVEL 5 REACHED - 1 point added (idcat:".$idcat." | ".$oSubSubSubSubCategories->getIdCat()."<br>";
                                 if ($showSubLevels4a5) {
                                    toTpl($tpl5, $oSubSubSubSubCategories, (intval($idcat) == $oSubSubSubSubCategories->getIdCat() ? ' class="active"' : ''), '');
                                 }
                              }
                              
                              if ($showSubLevels4a5) {
                                 $sSubcats4 = $tpl5->generate('templates/navigation_main_item.html', true, false);
                                 $tpl5->reset();
                                 $tpl5->set('s', 'items', $sSubcats4);
                                 $tpl5->set('s', 'css-class', ' class="subSubSubSubNavigation"');
                                 $sSubcats4 = $tpl5->generate('templates/navigation_main_container.html', true, false);
                              }
                           }


                           if ($bHasActiveSubCat === false && intval($idcat) == $oSubSubSubCategories->getIdCat()) {
                              $bHasActiveSubCat = true;
                           }
                           if ($bHasActiveSubSubCat === false && intval($idcat) == $oSubSubSubCategories->getIdCat()) {
                              $bHasActiveSubSubCat = true;
                           }
                           if ($bHasActiveSubSubSubCat === false && intval($idcat) == $oSubSubSubCategories->getIdCat()) {
                              $bHasActiveSubSubSubCat = true;
                           }
                           
                           if ($showSubLevels4a5) {
                              toTpl($tpl4, $oSubSubSubCategories, (intval($idcat) == $oSubSubSubCategories->getIdCat() || $bHasActiveSubSubSubSubCat === true ? ' class="active"' : ''), $sSubcats4);
                           }
                        }
                        $sSubcats3 = $tpl4->generate('templates/navigation_main_item.html', true, false);
                        $tpl4->reset();
                        $tpl4->set('s', 'items', $sSubcats3);
                        $tpl4->set('s', 'css-class', ' class="subSubSubNavigation"');
                        $sSubcats3 = $tpl4->generate('templates/navigation_main_container.html', true, false);

                     }
                     if ($bHasActiveSubCat === false && intval($idcat) == $oSubSubCategories->getIdCat()) {
                        $bHasActiveSubCat = true;
                     }
                     if ($bHasActiveSubSubCat === false && intval($idcat) == $oSubSubCategories->getIdCat()) {
                        $bHasActiveSubSubCat = true;
                     }
                     //toTpl($tpl3, $oSubSubCategories, (intval($idcat) == $oSubSubCategories->getIdCat() ? ' class="active"' : ''), '');
                     toTpl($tpl3, $oSubSubCategories, (intval($idcat) == $oSubSubCategories->getIdCat() || $bHasActiveSubSubSubCat === true ? ' class="active"' : ''), $sSubcats3);
                  } #foreach
                  $sSubcats2 = $tpl3->generate('templates/navigation_main_item.html', true, false);
                  $tpl3->reset();
                  $tpl3->set('s', 'items', $sSubcats2);
                  $tpl3->set('s', 'css-class', ' class="subSubNavigation"');
                  $sSubcats2 = $tpl3->generate('templates/navigation_main_container.html', true, false);
               } #if
               if ($bHasActiveSubCat === false && intval($idcat) == $oSubCategory->getIdCat()) {
                  $bHasActiveSubCat = true;
               }
               toTpl($tpl2, $oSubCategory, (intval($idcat) == $oSubCategory->getIdCat() || $bHasActiveSubSubCat === true ? ' class="active"' : ''), $sSubcats2);
            }
            $sSubcats = $tpl2->generate('templates/navigation_main_item.html', true, false);
            $tpl2->reset();
            $tpl2->set('s', 'items', $sSubcats);
            $tpl2->set('s', 'css-class', ' class="subNavigation"');
            $sSubcats = $tpl2->generate('templates/navigation_main_container.html', true, false);
         }
         
         
         toTpl($tpl, $oContenidoCategory, ($bHasActiveSubCat === true || intval($idcat) == $oContenidoCategory->getIdCat() ? ' class="active"' : ''), $sSubcats);
      }
      $sCats = $tpl->generate('templates/navigation_main_item.html', true, false);
      $tpl->reset();
      #$tpl->set('s', 'css-class', '');
      $tpl->set('s', 'items', $sCats);
      $tpl->generate('templates/navigation_main_container.html');
   }
} catch (Exception $e) {
   echo 'Some error occured: ' . $e->getMessage() . ': ' . $e->getFile() . ' at line '.$e->getLine() . ' ('.$e->getTraceAsString().')';
}

/**
* Helper to push values to Template object
* @param Template $oTpl
* @param Contenido_Category $oCat
* @param string $sActiveCssClass must bei either empty string or " class="classname"
* @param string $sSubcats String with subcategories of current category
*/
function toTpl(&$oTpl, Contenido_Category $oCat, $sActiveCssClass, $sSubcats) {
   $oTpl->set('d', 'css-class', $sActiveCssClass);
   $oTpl->set('d', 'url', 'front_content.php?idcat='.$oCat->getIdCat());
   $oTpl->set('d', 'title', htmlentities($oCat->getCategoryLanguage()->getName()));
   $oTpl->set('d', 'label', htmlentities($oCat->getCategoryLanguage()->getName()));
   $oTpl->set('d', 'subcategories', $sSubcats); // followup level
   $oTpl->next();
}

function toTplArt(&$oTpl, $name, $sActiveCssClass, $sSubcats) {
   $oTpl->set('d', 'css-class', $sActiveCssClass);
   $oTpl->set('d', 'url', 'front_content.php?idart='.$idart);
   $oTpl->set('d', 'title', htmlentities($name));
   $oTpl->set('d', 'label', htmlentities($name));
   $oTpl->set('d', 'subcategories', $sSubcats); // followup level
   $oTpl->next();
}
?>
Gesperrt