Sehr schön wäre das Ganze auch mit Hilfe einer Datenbank möglich:
Tabelle navi:
id int(11) auto_increment
topmenu int(11) NOT NULL default '0'
label varchar(255)
url varchar(255)
Wenn die Spalte topmenu 0 ist, bedeutet dies, dass dieser Link die oberste Kategorie ist. Ansonsten steht in topmenu die Idee des Links, dem dieser Link untergeordnet ist.
PHP-Code:
<?php
$sql = "SELECT
id,
topmenu,
label,
url
FROM
navi
ORDER BY
id";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)) {
$menudetails[$row['id']] = $row;
$topmenu[$row['topmenu']] = $row['id'];
}
function CreateMenu($id)
{
echo '<ul>';
echo '<li><a href="' . $menudetails[$id]['url'] . '">' . $menudetails[$id]['label'] . '</a>';
if(is_array($topmenu[$id])) {
foreach($topmenu[$id] as $subKat) {
CreateMenu($subKat);
}
}
echo '</ul>';
}
foreach($topmenu[0] as $topKat) {
CreateMenu($topKat);
}
?>
Ungetestet, aber das Prinzip sollte klar werden.