habe gestern begonnen das erste Projekt mit Redaxo umzusetzen. Soweit bin ich auch schon recht zufrieden mit dem Ergebnis.
Nun sitze ich an der Navigation, diese soll auf der Seite an 2 Stellen stehen.
Die erste Navigation enthält in diesem Fall die erste und zweite Ebene der Struktur. Und die andere Navigation soll die dritte Ebene enthalten.
Soweit funktioniert die darstellung auch, leider wird die dritte Ebene immer angezeigt, sobald ich in einer Hauptkategorie bin, wo eine Dritte Ebene vorhanden ist. Ich möchte die zugehörige dritte aber erst angezeigt bekommen, wenn die ein Punkt in 2. Ebene angeklickt wurde.
Folgenden Code habe ich gefunden, und ein wenig angepasst, also HTML-Einrückungen für die Formatierung und etwas andere Namen etc.
- Code: Alles auswählen
<?php
// EXPLODE PATH
$PATH = explode("|",$this->getValue("path").$this->getValue("article_id")."|");
// GET CURRENTS
$path1 = $PATH[1];
$path2 = $PATH[2];
$path3 = $PATH[3];
// Hauptebene Kategorien
$mainNav .= "\n\t".'<ul class="nav1st">'."\n";
foreach (OOCategory::getRootCategories() as $lev1) {
if($lev1->isOnline()):
if($lev1->getId() == $path1) {
// Level 1 aktiver Link
$mainNav .= "\t\t".'<li class="active1st"><a class="current" href="'.$lev1->getUrl().'">'.$lev1->getName().'</a>'."\n";
} else {
// Level 1 nicht aktiver Link
$mainNav .= "\t\t".'<li><a href="'.$lev1->getUrl().'">'.$lev1->getName().'</a>'."\n";
}
// Wenn erste Ebebe Unterkategorien hat weitermachen
$lev1Size = sizeof($lev1->getChildren());
if($lev1->getId() == $path1) {
if($lev1Size != "0"):
$mainNav .= "\t\t".'<ul class="nav2nd">'."\n";
//Level 2 Kategorien ausgeben
foreach($lev1->getChildren() as $lev2):
if($lev2->isOnline()):
if($lev2->getId() == $path2) {
//Level 2 aktiver Link
$mainNav .= "\t\t\t".'<li class="active2nd"><a class="current" href="'.$lev2->getUrl().'">'.$lev2->getName().'</a>';
} else {
//Level 2 nicht aktiver Link
$mainNav .= "\t\t\t".'<li><a href="'.$lev2->getUrl().'">'.$lev2->getName().'</a>';
}
//Wenn zweite Ebene Unterkategorien hat weitermachen
$lev2Size = sizeof($lev2->getChildren());
if($lev2Size != "0"):
$subNav .= "\t\t\t".'<ul class="nav3rd">'."\n\t\t\t".'<li>'.$lev2->getName()."\n";
$subNav .= "\t\t\t".'<ul>'."\n";
//Level 3 Kategorien ausgeben
foreach($lev2->getChildren() as $lev3):
if($lev3->isOnline()):
if($lev3->getId() == $path3) {
//Level 3 aktiver Link
$subNav .= "\t\t\t\t".'<li class="active3rd"><a href="'.$lev3->getUrl().'">'.$lev3->getName().'</a></li>'."\n";
} else {
//Level 3 nicht aktiver Link
$subNav .= '<li><a href="'.$lev3->getUrl().'">'.$lev3->getName().'</a></li>'."\n";
}
endif; //Ende Level 3 isOnline
endforeach; //Ende Level 3 foreach
$subNav .= "\t\t\t".'</ul>'."\n";
$subNav .= "\t\t\t".'</li>'."\n";
$subNav .= "\t\t\t".'</ul>'."\n";
endif; //Ende Level 3 gibts da überhaupt was
$mainNav .= "\t\t".'</li>';
endif; //Ende Level 2 isOnline
endforeach; //Ende Level 2 foreach
$mainNav .= "\t\t".'</ul>';
endif; //Ende Level 2 gibts da überhaupt was
}
$mainNav .= "\t\t".'</li>';
endif; //Ende Level 1
}
$mainNav .= "\t".'</ul>';
Ich hoffe ihr versteht was ich bezecken möchte und kennt eine Lösung, die Suche hat mir nicht das gebracht was ich wollte. Vielleicht auch falsche Suchkombinationen.
Vielen dank schonmal,
backes

