Eine Webseite braucht verschiedene Arten von Navigationen – z.B. eine Navigation mit Unterebenen oder einfache Navigationen oder eventuell Kombinationen daraus. Auch ein Pfad oder eine Sitemap ist eine spezielle Art einer Navigation.
Eine Webseite braucht verschiedene Arten von Navigationen – z.B. eine Navigation mit Unterebenen oder einfache Navigationen oder eventuell Kombinationen daraus. Auch ein Pfad oder eine Sitemap ist eine spezielle Art einer Navigation.
In REDAXO gibt es mehrere Möglichkeiten, dies umzusetzen. Für einfache Varianten existiert eine Klasse rex_navigation. Damit sollten die meisten Navigationsvarianten auch mit nur sehr wenig PHP-Kenntnissen umsetzbar sein.
Es empfiehlt sich, ein eigenes Template für die Navigation zu nutzen und dieses im Haupttemplate einzubauen.
Eine einfache Navigation könnte so aussehen:
<?php
$nav = rex_navigation::factory();
echo '<div id="navi">';
echo $nav->get(0,-1,FALSE,TRUE);
echo '</div>';
?>
Wichtig ist vor allem folgende Zeile:
$nav->get(0,-1,FALSE,TRUE);
da diese definiert, wie die Navigation ausgegeben wird.
Die Navigation wird in diesem Fall mit einem vordefiniertem HTML-Code ausgegeben – in unserem Fall eine Liste. Mit folgendem Stylesheet lässt sich daraus eine einfache Formatierung erzeugen:
<style>
#navi ul {
border-top: 1px solid #D2D2D2;
}
#navi ul li {
background-color: #F6F6F6;
border-bottom: 1px solid #D2D2D2;
}
#navi ul li a {
display: block;
padding: 3px 5px;
color: #E30510;
font-weight: bold;
}
#navi ul li a:hover,
#navi ul li a.rex-current {
background-color: #E30510;
color: #FFF;
}
</style>
Folgender Code gibt eine Sitemap aus, welche in der obersten Ebene startet und wegen der “-1” alle Ebenen durchläuft.
Sitemap
<?php
$nav = rex_navigation::factory();
echo '<div id="sitemap">';
echo $nav->get(0,-1,TRUE,TRUE);
echo '</div>';
?>
Mit folgendem Code erzeugt man eine Breadcrumb-Navigation:
Breadcrumb
<?php
$nav = rex_navigation::factory();
echo '<div id="breadcrumb">';
echo $nav->getBreadcrumb(TRUE,TRUE,0)
echo '</div>';
?>
Neben der rex_navigation kann man Navigationen auch selbst mit eigenem HTML Code erstellen. Dafür sind ein wenig mehr PHP Kenntnisse notwendig, da hier REDAXO spezifische Funktionen und Objekte verwendet werden müssen.
Folgendes Script erstellt eine Navigation mit 2 Ebenen, allerdings mit eigenem HTML Code, so dass dieser nach eigenen Wünschen angepasst werden kann.
<?php
$PATH = explode("|",$this->getValue("path").$this->getValue("article_id")."|");
echo '<ul class="nav1">';
foreach (OOCategory::getRootCategories() as $lev1)
{
if($lev1->getId() == $PATH[1])
echo '<li class="active"><a href="'.$lev1->getUrl().'">'.$lev1->getName().'</a>';
else
echo '<li><a href="'.$lev1->getUrl().'">'.$lev1->getName().'</a>';
if(count($lev1->getChildren())>0)
{
echo '<ul class="nav2">';
foreach ($lev1->getChildren() as $lev2)
{
if($lev2->getId() == $PATH[1])
echo '<li class="active"><a href="'.$lev2->getUrl().'">'.$lev2->getName().'</a>';
else
echo '<li><a href="'.$lev2->getUrl().'">'.$lev2->getName().'</a>';
}
echo '</ul>';
}
echo '</li>';
}
echo '</ul>';
?>