Hallo Zusammen
Ich habe eine dynamische Navigation programmiert. Der Inhalt des Verzeichnisses wird in ein Array geschrieben.
Dieses geben ich mit foreach aus. Damit der HTML-Code nachher auch gültig ist, muss das ganze folgende Struktur erzeugen:
Mit folgendem Code gebe ich die Navigation erfolgreich aus:
Die foreach Schleife wird ja für jeden Eintrag einmal durchlaufen. Dabei wird bei den Stufen t2 und t3 für jedes Elemenent ein <ul> Container erzeugt.
In dem ich die <ul> </ul> Tags der ersten Stufe t1 ausserhalb der foreach-Schleife platziere, stimmt es bei der ersten Stufe. Die Ganze Navigation wird also von <ul class="t1"></ul> umschlossen.
Da die Schleife für jeden Eintrag einmal durchlaufen wird generiert mir das Skript für jeden <li></li> Eintrag ein separates <ul></ul>..
Ist das verständlich erklärt??
Wie kann ich erreichen das auch die t2 und t3 jeweils nur ganzen Block umschliessen, und nicht jedes Element einzeln?
Was ich schon probiert habe:
1. Die foreach Schleife nach der ersten Ebene zu schliessen und dann mit neuen foreach-Schleifen den Rest auszugeben, so waren leider die Einträge immer zuunterst unter der Navigation.
2. Foreach verschalten, also innerhalb der foreach-Schleife 2 weitere welche die zweite und dritte Ebene ausgeben sollten. Das klappt jedoch nicht weil dass dann eine Endlos-Schleife gibt und die Navigation unentlich mal ausgebeben wird.
Hat jemand eine Idee wie ich weiterkommen könnte??
Mfg derLehrling
Ich habe eine dynamische Navigation programmiert. Der Inhalt des Verzeichnisses wird in ein Array geschrieben.
Dieses geben ich mit foreach aus. Damit der HTML-Code nachher auch gültig ist, muss das ganze folgende Struktur erzeugen:
Code:
<ul> <li>1</li> <li>2 <ul> <li>2.1</li> <li>2.2</li> <li>2.3</li> </ul> </li> <li>3</li> </ul>
PHP-Code:
echo '<ul class="t1">';
foreach ($entries as $entry) {
if ($entry['path'] != './Inhalt'){
if ($entry['depth'] == 1) {
echo '<li><a href="./Startseite.php?l=' . $entry['path'] . '">' . $entry['title'] . '</a>';
echo '</li>';
}
if ($entry['depth'] == 2) {
echo '<ul class="t2">';
echo '<li><a href="./Startseite.php?l=' . $entry['path'] . '">' . $entry['title'] . '</a>';
echo '</ul></li>';
}
if ($entry['depth'] == 3) {
echo '<ul class="t3">';
echo '<li><a href="./Startseite.php?l=' . $entry['path'] . '">' . $entry['title'] . '</a>';
echo '</ul></li>';
}
}
}
echo '</ul>';
In dem ich die <ul> </ul> Tags der ersten Stufe t1 ausserhalb der foreach-Schleife platziere, stimmt es bei der ersten Stufe. Die Ganze Navigation wird also von <ul class="t1"></ul> umschlossen.
Da die Schleife für jeden Eintrag einmal durchlaufen wird generiert mir das Skript für jeden <li></li> Eintrag ein separates <ul></ul>..
Ist das verständlich erklärt??
Wie kann ich erreichen das auch die t2 und t3 jeweils nur ganzen Block umschliessen, und nicht jedes Element einzeln?
Was ich schon probiert habe:
1. Die foreach Schleife nach der ersten Ebene zu schliessen und dann mit neuen foreach-Schleifen den Rest auszugeben, so waren leider die Einträge immer zuunterst unter der Navigation.
2. Foreach verschalten, also innerhalb der foreach-Schleife 2 weitere welche die zweite und dritte Ebene ausgeben sollten. Das klappt jedoch nicht weil dass dann eine Endlos-Schleife gibt und die Navigation unentlich mal ausgebeben wird.
Hat jemand eine Idee wie ich weiterkommen könnte??
Mfg derLehrling
Kommentar