Webseitenbau
Home
Site/Index
 
Web Webseitenbau
Google English français  
⬆4. 6. 4 Menü-Formel menue-formel.php

4.6.4 Menü-Formel menue-formel.php

Daten

Pfeil nach rechts (Icon)
      120 x 120 Pixel PHP-Navigation: Menü-Liste erstellen

Pfeil nach rechts (Icon)
      120 x 120 Pixel PHP-Navigation: Menü-Liste anzeigen

Technik

Pfeil nach rechts (Icon)
      120 x 120 Pixel PHP: PHP-Anleitung

Pfeil nach rechts (Icon)
      120 x 120 Pixel PHP: PHP-Befehle

    

Anwendung

Pfeil nach rechts (Icon)
      120 x 120 Pixel PHP-Navigation: Include-Datei body-start.php

-

1 Allgemein

Zweck

Prinzip

-

2 menue-formel.php

Include-Datei: menue-formel.php

Pfad: http://webbau.brandenberger.eu/include/struktur/menue-formel.php

<?php
/* benötigte Variablen für die Schlaufe */
  $leer1 = "";  // Leerzeichen, falls letzte Kapitelzahl kleiner als 10
  $leer2 = " ";  // Standard-Leerzeichen, welches immer vor die Bezeichnung kommt
                      // Bsp:  1.2.1 + leer1 + leer2 + Titel  (+ steht für aneinandergehängt)
                      // aber  1.2.10 + leer2 + Titel

  $kap_vorher  = -100.1;                          // speichert jeweils die vorherige Hauptkapitelzahl (am Anfang irgendein unmöglicher Wert)
  $u1k_vorher  = -100.1;                          // Dasselbe mit der U1-Kapitelzahl;
  $u1kap_offen = false;                           // Falls Unterkapitelmenü geöffnet: true sonst false
  $u2kap_offen = false;                           // dasselbe mit Unter-Unterkapitelmenü
  
/* Schlaufe, welches den Array $menue durchgeht */
	foreach ($menue as $punkt)
	{
    if ($punkt[0] == "Trennzeile") echo "<li><hr></li>";    // Gegebenenfalls eine Trennlinie
    else {
/* Schliessen von Untermenüs, wenn sich die Kapitelzahl erhöht */
      if ($u1kap_offen && $kap_vorher != $punkt[2])     // schliesst das Untermenü, sobald sich die Hauptkapitelzahl ändert
        $u1kap_offen = false;
      if ($u1kap_offen && $u1k_vorher != $punkt[3])     // schliesst das UnterUntermenü, sobald sich die U1-Kapitelzahl ändert
        $u2kap_offen = false;

/* Überprüfung, ob der Eintrag geschrieben werden soll */ 
      $schreibe = false;                                // Aus Prinzip, wird mal die Zeile nicht geschrieben ;)
      if ($kap_vorher != $punkt[2] || $u1kap_offen) $schreibe = true;   // Falls sich die Kapitelnummer nicht ändert, wird nur geschrieben falls das Untermenü offen ist
      if ($u1kap_offen && $u2kap_offen) $schreibe = true;               // Falls beide Untermenüs offen sind, wieder sowieso geschrieben
      if ($u1kap_offen && !$u2kap_offen && $u1k_vorher == $punkt[3]) $schreibe = false;   // Falls U1 offen und U2 geschlossen, wird nur geschrieben falls die Untermenüzahl gleich bleibt
      if ($punkt[7]) $schreibe = false;                 // Ist der 7. Punkt true, so wird der Menüeintrag weggelassen  
                                  
      if ( $schreibe ) {   // Hauptentscheidung, ob Eintrag geschrieben wird (abh. von Änderung der Hauptkapitelzahl)
    		echo "<li ";
/* Hinzufügen von Identitäten oder Klassen */
        if ($u1kap_offen) {
          if ($u2kap_offen) {
            echo "class='menue_uk2'";
          } else {
          	if ($u1k_nr == $punkt[3]) {
            	echo "id='menue_uk1_aktiv'";
            	$u2kap_offen = true;
            } else echo "class='menue_uk1'";
          }
        } elseif ($kap_nr == $punkt[2]) {
        	echo "id='menue_aktiv'";
          $u1kap_offen = true;
        } 
        
/* Listeneintrag weiterschreiben */
        echo "><a href='..$punkt[1]'>";
        if ($punkt[2]>0) {                    // Falls eine Kapitelzahl Null ist, wird diese und die untergeordneten Kapitelzahlen nicht angezeigt
          echo $punkt[2];
          if ($punkt[3]>0) {
            echo ".".$punkt[3];
            if ($punkt[4]>0) {
              echo ".".$punkt[4];
              if ($punkt[4]<10) echo $leer1;      // Erster Leerzeichen falls letzte Zahl kleiner als 10
            } elseif ($punkt[3]<10) echo $leer1;  // dito
          } elseif ($punkt[2]<10) echo $leer1;    // dito
        }
        echo $leer2.$punkt[0]."</a></li>\n";
      }
/* Speichern der aktuellen Kapitelzahl für nächsten Durchgang */
      $kap_vorher = $punkt[2];
      $u1k_vorher = $punkt[3];
    }
	}
	echo $test;
?>