Hauptnavigation 4.8.8 - Problem mit Ebenen

Gesperrt
matt.loker
Beiträge: 203
Registriert: Mo 7. Mai 2007, 09:05
Kontaktdaten:

Hauptnavigation 4.8.8 - Problem mit Ebenen

Beitrag von matt.loker »

Hallo Community,
ich bin etwas am verzweifeln. Ich bin schon seit mehreren Tag an meiner Navigation dran und bekomme mein Problem einfach nicht gelöst.
Ich weis nimmer weiter und hoffe es gibt jemanden da draußen der mir helfen kann.
Das Problem ist Folgendes:

Menüaufbau:
Ebene 1
Ebene 2
Ebene 3
Ebene 4

Ich klicke auf einen Menüpunkt in der Ebene 1 - die Seite lädt neu und es wird Ebene 2 angezeigt.
Klicke ich mich durch die einzelnen Ebenen durch funktioniert alles bis zur Ebene 3.
Klicke ich auf einen Menüpunkt in der Ebene 4 - lädt die Seite neu jedoch verschwinden alle Ebenen und das Menü schließt sich und ich sehe nur noch Ebene 1 und die Ebene 2

Ich weis einfach nicht mehr weiter - seit Tagen sitze ich da schon dran und drehe mich nur im Kreis. Ich hoffe sehr jemand von euch kann mir helfen!

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', htmlspecialchars_decode($oCat->getCategoryLanguage()->getName()));
   $oTpl->set('d', 'label', htmlspecialchars_decode($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', htmlspecialchars_decode($name));
   $oTpl->set('d', 'label', htmlspecialchars_decode($name));
   $oTpl->set('d', 'subcategories', $sSubcats); // followup level
   $oTpl->next();
}
?>
Viele Grüße
Matt
mfweb
Beiträge: 270
Registriert: Mo 12. Sep 2005, 18:31
Kontaktdaten:

Re: Hauptnavigation 4.8.8 - Problem mit Ebenen

Beitrag von mfweb »

Die bisherigen Versionen der Hauptnavigation unterstützten von Haus aus nur Menüs bis zur Ebene 3. Dies hat sich nun in der Version 4.8.11 geändert.
Das Hauptnavigationsmodul wurde so angepasst, dass standardisiert suchmaschinenoptimierte Links generiert werden. Ebenso kann nun eine unbegrenzte Anzahl von Ebenen verwendet werden. Der gesamte Beispielmandant liefert sprechende URLs aus, die Anpassungen der Navigation wurden ebenfalls in der Sitemap umgesetzt.
(Quelle: http://www.contenido.org/de/cms/Conteni ... 342-3.html)

Versuche doch einfach einmal diese Version.

Aufpassen müsstest du wahrscheinlich bei "standardisiert suchmaschinenoptimierte Links". Hier müsstest du ggf. wieder die Standardausgabe mit front_end.php einstellen (siehe Aktivierung der Erstellung von SEO-URLs).

Grüße
mfweb
Immer mal ein Blick wert: Contenido Wiki ... auch schreibender Zugriff ist erlaubt!
matt.loker
Beiträge: 203
Registriert: Mo 7. Mai 2007, 09:05
Kontaktdaten:

Re: Hauptnavigation 4.8.8 - Problem mit Ebenen

Beitrag von matt.loker »

Oh man, und ich brech mir bei dem Menü einen ab, obwohl es hoffnungslos is :(. Ich könnte schreien. Danke für die Info mfweb.

Der Grund wieso ich die Navigation aus der vorherigen Version benutze ist, da ich da ganz einfach das Menü so anpassen konnte, dass die 1. und 2. Menüebene immer angezeigt werden. Bei der neuen Navigation reichen meine PHP-Kenntnisse nicht auch um es anzupassen.

Hat von euch oder du mfweb vielleicht eine Idee was ich machen muss, dass Menüebene 1 und 2 immer angezeigt bleiben? Vielen Dank für die Hilfe!

Code: Alles auswählen

<?php
/**
* $RCSfile$
*
* Description: 
* Main Navigation, displays Navigation from a starting idcat down to the max. level set.
* For now (as of 2009-01-12) all subcategories are put inside one <ul> and are assigned css classes 
* to distinguish level depth, first/last and active item property.
* 
* Module requires two client settings: 
* navigation_main_standard | start_idcat
* navigation_main_standard | level_depth
* 
* To modify the behaviour of the module (e.g. style of URL, CSS classes, ...), you need to edit Contenido_NavMain_Util::loopCats
* @see {frontend}/includes/Util/Modules/Contenido_NavMain_Util.class.php
*
* @version 1.0.0
* @author Rudi Bieller
* @copyright four for business AG <www.4fb.de>
*
* {@internal
* created 2009-01-12
* }}
*
* $Id: Navigation_Standard.php 3444 2009-01-19 11:42:59Z rudi.bieller $
*/

if (!isset($db)) {
    $db = new DB_Contenido();
}
if (!isset($tpl)) {
    $tpl = new Template();
}
$tpl->reset();

cInclude('classes', 'Contenido_FrontendNavigation/Contenido_FrontendNavigation.class.php');
cInclude('frontend', 'includes/Util/Modules/Contenido_NavMain_Util.class.php');

$iStartIdcat = getEffectiveSetting('navigation', 'idcat-home', 1);
$iSelectedDepth = getEffectiveSetting('navigation', 'level-depth', 3);

if ($iStartIdcat > 0) {
    $oFeNav = new Contenido_FrontendNavigation($db, $cfg, $client, $lang, $cfgClient);
    $oFeNav->setAuth($auth);
    $oFeNav->setRootCat($iStartIdcat);
    $oSubCategories = $oFeNav->getSubCategories($iStartIdcat, true, true, 1);
    // see if there are any subcategories to display
    if ($oSubCategories->count() > 0) {
        $aLevelInfo = array();
        $aDepthInfo = array();
        $aDepthInfo[0] = 0;
        $aDepthInfo[1] = $iSelectedDepth;
        foreach ($oSubCategories as $oSubCategory) {
            Contenido_NavMain_Util::loopCats($oSubCategory, $oFeNav, $tpl, $cfg, $lang, $aLevelInfo, intval($idcat), $aDepthInfo);
        }
        $tpl->generate('templates/navigation_standard.html');
    }
} else {
    echo '<p>Navigation not configured correctly.</p>';
}
?>
Grüße
Matt
luke
Beiträge: 63
Registriert: Fr 26. Nov 2004, 09:07
Wohnort: Schweiz
Kontaktdaten:

Re: Hauptnavigation 4.8.8 - Problem mit Ebenen

Beitrag von luke »

matt.loker hat geschrieben:Hat von euch oder du mfweb vielleicht eine Idee was ich machen muss, dass Menüebene 1 und 2 immer angezeigt bleiben? Vielen Dank für die Hilfe!
Würde mich auch sehr interessieren!

up
matt.loker
Beiträge: 203
Registriert: Mo 7. Mai 2007, 09:05
Kontaktdaten:

Re: Hauptnavigation 4.8.8 mit mehr als 3 Ebenen

Beitrag von matt.loker »

Hallo zusammen,
hab das Hauptmenü der 4.8.8 erfolgreich dazu gebracht dass es Ebene 1+2 immer anzeigt und mehr als 3 Ebenen ausgibt.
Der Fehler, dass bei Ebene 3 das Menü zurückgesprungen ist lag an

Code: Alles auswählen

$aBreadcrumb = $oBreadcrumb->getAsArray($idcat, 1); // this nav starts at level 1
hatte $idcat auf 4 stehen. Hab es auf 1 gesetzt und es klappte!

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 templates 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, 1); // 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, 5);
   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', htmlspecialchars_decode($oCat->getCategoryLanguage()->getName()));
   $oTpl->set('d', 'label', htmlspecialchars_decode($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', htmlspecialchars_decode($name));
   $oTpl->set('d', 'label', htmlspecialchars_decode($name));
   $oTpl->set('d', 'subcategories', $sSubcats); // followup level
   $oTpl->next();
}
?>
Grüße
Matt
luke
Beiträge: 63
Registriert: Fr 26. Nov 2004, 09:07
Wohnort: Schweiz
Kontaktdaten:

Re: Hauptnavigation 4.8.8 - Problem mit Ebenen

Beitrag von luke »

Hoi matt, Wenn ich diesen Code bei mir einsetze, passiert leider gar nichts. Kannst du mir noch den Inhalt der zwei verwendeten Templates navigation_main_item.html und navigation_main_container.html (wieso sinds eigentlich zwei?) hier reinkopieren? Weiss zwar nicht ob das was bringt. Ich dachte eigentlich, Nav von 4.8.8 ist in 4.8.11 verwendbar.... Ansonsten suche ich immernoch eine Möglichkeit, das Menu standardmässig zu extenden, mit nur Ändern des Modulcodes, also nicht die Datei mit der Menufunktion drin (im "include"-Ordner).
matt.loker
Beiträge: 203
Registriert: Mo 7. Mai 2007, 09:05
Kontaktdaten:

Re: Hauptnavigation 4.8.8 - Problem mit Ebenen

Beitrag von matt.loker »

hey Luke,
navigation_main_container.html

Code: Alles auswählen

<ul{css-class}>
	{items}
</ul>
navigation_main_item.html

Code: Alles auswählen

<!-- BEGIN:BLOCK -->
	<li><a href="{url}" title="{title}"{css-class}>{label}</a>{subcategories}</li>
<!-- END:BLOCK -->
Vielleicht stimmt ja auch was mit der Zeile nicht bei dir

Code: Alles auswählen

// get start idcat
$iIdcatStart = getEffectiveSetting('navigation', 'idcat-home', 4);
Überprüf mal unter Mandanteneinstellungen welche ID und namen deine Navigation hat.

Grüeß
matt
Gesperrt