2 4 3 12 0 0 0

Die automatische Linkbildung

Die hier beschriebene Datei link.php muss in die index.php inkludiert werden, vor dem body-Element und befindet sich im Ordner „php“. Der Code soll ebenfalls nur einmal zu Besuchsbeginn ausgeführt werden. Der Code funkt natürlich auch nach dem Refresh.
Wie Ordner und Dateien gezielt dazu benutzt werden, um auf sich selber Links bilden zu können, habe ich im vorherigen bechrieben. Und nun machen wir das.
Alles was wir brauchen, ist in Textdateien gespeichert für Ordner- und Dateibezeichnungen und deren URLs. Ein Beispiel möchte ich zeigen aus der Datei file.txt für die Dateienerfasung. Eine mySQL-Datenbank dafür hinzuzuziehen, wäre wie mit Kanonen auf Spatzen zu schießen. Jede Änderung von Dateinnamen oder Hinzufügen neuer Dateien wird hier bereits sichtbar.
Eine einfache Demonstration mit file_get_contents():

00:port|01:SiteMap|
00:dummy|01:allgemeines|02:CMS|03:Guter Stil|11:HTML5 Elemente|12:HTML Elemente|13:ProjektKonventionen|14:Farbbezeichnungen|15:Übergroße Inhalte|21:iFrame|31:Beschreibungslisten|33:Listendarstellung|34:Verweise|41:Hintergrundbilder|42:Hintergrundbild bewegen T1|43:Hintergrundbild bewegen T2|51:Erklärung|52:Kurvendarstellung|53:bezierCurveTo|54:Kerzenflamme|
00:dummy|11:Formatierungen|12:Boxmodell|21:Textgestaltung|23:Rahmengestaltung|31:Zeileneinzug|32:Silbentrennung|33:Kolumnen|34:Anzeige|35:Filter|36:Transformationen|51:Selektoren|52:Kombinatoren|53:Pseudoelemente|54:Pseudoklassen|71:Positionierung mit CSS|72:Initialen|73:Bilderbuch|74:Farbverläufe|75:Animationen|
00:dummy|01:Vorwort|11:Arrays und Iterationen|21:Query-String|22:style vs setAttribute|23:Style-Notation|24:Event-Handler|25:Ajax|41:Funktionsrückgabe|43:Timeout und Intervall|44:requestAnimationFrame|61:Mausposition|62:Farbiges Licht T1|63:Farbiges Licht T2|64:Farbspielerei|65:Laufzeitberechnung|
00:dummy|01:vorweg|11:Struktur auslesen|12:Linkbildung|13:Darstellung|14:Verzeichnisabbildung|15:Bedingungen|21:MetaDaten per PHP|31:Viele Wege Teil1|32:Viele Wege Teil2|33:Viele Wege Teil3|34:EXIF-Daten auslesen|41:Datumsausgabe März|42:PHP definiertes CSS|61:Inhaltsverzeichnis|62:noch eine Navigation|
00:dummy|01:Allgemeines|21:Elementstruktur|22:ContainerElemente|23:Grundformen|24:GrafikElemente|26:Verlaufselemente|27:Filterelemente|28:Musterelement|31:Übersicht|32:viewBox|33:Transformation|34:Strich und Füllung|41:Definition|43:Beschneidungspfad Maskierung|44:SpecularLighting|51:Animation mit JavaScript|52:animateMotion|53:Analoguhr Praxis|54:LCD Ziffern|55:animateMotion T2|56:Kreisberechnungen und Rotation|
00:dummy|

Jede Zeile gibt den Inhalt eines Ordners aus. Jede erste Zahl in der Dateibezeichnung hat die Referenz auf einen Unterordner, soweit ein Ordner mit gleicher führenden Zahl existiert. Wenn nicht ist es eine Datei erster Ordnung, die ohne Unterordner im Pulldown-Menü erscheint.
Was folgt, befasst sich mit der Bestimmung, was alles eingelesen werden soll und der Initialisierung.

Die Inhalte werden Arrays übergeben. Kennt man alles! Es geht um die Arrays für Ordner und Dateien. Jedes einzelne Array erklärt sich später in der Bildung der Links. Wenn es auffallen sollte, dass auch für Ordner eine URL erfasst wird, dann sei vermerkt: Man kann auch einen Ordner dazu benutzen, selber Link zu werden. Das ist dann der Fall, wenn nur eine Datei für den Ordner zur Verfügung steht. Regel: xx_Bezeichnung/00_Bezeichnung.htx nicht 01_ oder andere führende Zahl.

${"ardir_..."} Variablen erfassen alle ordner-relevanten Daten, ${"arfi_..."} alle datei-relevanten, sowie den relativen Pfad zu ihnen.

Die Elemente erhalten den Listencharakter. Um die Schreibweisen zu kürzen, habe ich Variablen eingesetzt.
Von 62 bis 93: werden alle Ordner erfasst und in dynamischen Variablen gespeichert. Ihre Bestimmung wird festgestellt.

Von 95 bis 134: wird nach der Zugehörigkeit der Dateien gefragt und der entsprechenden Listenebene zugeordnet.
Ein Verständnis für die Listenelemente ul und li setze ich mal voraus. Sie zu öffnen und an der richtigen Stelle wieder zu schließen, umfasst den Bereich von 105 bis 137. Wem das zu fett ist, dem würden keine Erklärungen nutzen. Aber es gibt ja copy und paste.
Zugefügt habe ich nun mehr die Feststellung einer Referenzierung. Dem entsprechend wird der Menüpunkt geformt, also mit Referenz oder ohne. Dies wird in 124: kommentiert und von 125 bis 131: dargestellt.
Allerdings muss ich das folgend nochmal von hand eintragen. Die Darstellung von PHP in PHP wird nicht umgesetzt.

    // zusätzlich: bei erfolgter Referenzierung href entfernen
    $dirL = '<?php echo $zeile; ?> '; 
    $filenrL = '<?php echo $fz; ?> '; 
    $current = '<?php echo ($dirL != '.$zeile.' || $fz !='. $fz.' )?"current":"activ";?>' ; 
    $href = '<?php echo ($dirL != '.$zeile.' || $filenrL != '. $fz.') ? 
    "href=?k='.$zeile.'&s='.$file_nr.'&ogr='.$level.'&fnr='.$fz.' " : "" ; ?>' ; 
    $link .= $li."<a tabindex='1' $href\n  " ;
    $link .= "class='$current page'>$file_n</a>"; 

Jetzt muss nur noch alles in eine Datei geschrieben werden, damit die Navigation in der main.php im <main>-Element, das wiederum das <nav id='nav'>-Element als Kind hat, darin inkludiert wird.

Um zu verdeutlichen, was in die Datei directory.htx eingetragen wird, folgt deren Darstellung.


Dokument geändert am: 25. Aug. 2016 13:47