PHP-Code:
<?php
//lade Übersetzung der Navigation
require_once('inc/navTranslation.php');
//Menü Inhalt laden
$nav = file ('inc/nav.txt');
echo '<div ID="nav">
';
$iNumNav = count($nav);
$currLevel = 0;
for($iNav=0; $iNav<$iNumNav; $iNav=$iNav+1)
{
$bNewLevel=false;
//hole Eintrag in der Form: <EinstelligeNummerFür*Level*><RestrstringFür*page*>
$entry = trim($nav[$iNav]);
//bestimme $level und $page des Eintrags
$thisLevel = substr($entry,0,1);
$thisPage = substr($entry,1,strlen($entry));
//wenn Level gleich Vorgänger-Level
if ($thisLevel==$currLevel)
{
//letzten Eintrag abschließen
echo '</li>
';
}
//wenn anderes Level als Vorgänger-Level
else
{
//wenn Unterebene
if ($thisLevel>$currLevel)
{
//merke, dass neue Ebene
$bNewLevel = true;
//wenn mehr als eine Ebene tiefer
if ($thisLevel>($currLevel+1)) {echo "nav.php: config error!";}
//neue liste
echo '<ul>
';
//neues level merken
$currLevel = $thisLevel;
}
//wenn Ebene(n) zurück
else
{
//über alle Ebenen rückwärts
while ($currLevel > $thisLevel)
{
//dekrementieren und Level abschließen
$currLevel = $currLevel - 1;
echo '</li>
</ul>
';
}
}
}
//Eintrag anlegen
echo '<li><a href="'.$lang.'_'.$page.'.html" ';
if ($page==$thisPage) {echo 'ID="navCurrent"';}
if ($bNewLevel) {echo 'class="ie5_fix"';}
echo '>'.$navLang[$thisPage][$lang].'</a>
';
//wenn letzter Eintrag in Menü
if ($iNav == $iNumNav)
{
//über alle Ebenen rückwärts
while ($currLevel > 0)
{
//dekrementieren und Level abschließen
$currLevel = $currLevel - 1;
echo '</li>
</ul>
';
}
}
}
echo '</div>';
?>
wobei
$lang per GET ausgelesen wurde und
navTranslation.php lediglich das zweidimensionale Array für die Spracheinträge
$navLang enthält und das Menü selbst in
nav.txt mit Einträgen der Form:
1home
2news
2about
1category1
1contact
..definiert ist, wobei erste Zeichen für die Ebene im Menü steht und der Text danach so eine Art Seitenname ist.
>>there you go<<