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();
}
?>
Matt