Gandalfs Philosophie

Im folgenden Dokument beschreibe ich die Philosophie, die hinter Gandalf steckt, dessen verschiedene Arbeitsweisen, die Art wie mit Variablen gearbeitet werden kann, und vieles mehr.

 

Über Gandalf

Gandalf ist

  • offen
  • erweiterbar
  • flexibel
  • unbeschränkt
  • zukunftssicher

Offen

Gandalf steht unter einer Open-Source Lizenz. Damit ist es möglich, daß jeder dieses System nutzen kann, ohne auch nur einen Cent an Lizenzgebühren oder ähnliches zu zahlen. Gandalf kann sowohl im privaten Umfeld als auch in gewerblichen Bereich eingesetzt werden.

Erweiterbar

Gandalfs Philosophie baut darauf auf, daß es einfach sein muß, das System an seine Wünsche anpassen kann. Dafür wurde eine leistungsfähige Schnittstelle für Module erschaffen.

Flexibel

Gandalf kennt viele verschiedene Möglichkeiten, um Webseiten zu generieren. Seiten können aus statischem Text, halbstatischen Seiten oder Datenbankabfragen bestehen. Ganz so, wie es es gerade am Besten geeignet ist.

Unbeschränkt

Gandalf zwingt niemanden eine Arbeitsweise auf. Es gibt keine festdefinierten Variablen oder Dateien. Praktisch alles kann in der Config-Datei eingestellt werden oder ist von Grund des Designs frei von Schranken.

Zukunftssicher

Gandalf basiert auf XML, dem Dateiformat der Zukunft. Durch die Nutzung dieses Standards ist sichergestellt, daß Gandalf auch in Zukunft nicht an irgendwelchen Beschränkungen leiden muß.

Tech-Talk

Im vorherigen Abschnitt habe ich ein wenig mit Schlagworten um mich geschmissen, um die Entscheider zu überzeugen, die nichts von technischen Dingen verstehen und sowieso nicht bis hier lesen. In diesem Abschnitt jetzt beschreibe ich, wie Gandalf tatsächlich arbeitet.

Gandalfs Arbeitsweise beruht auf der Variablen Ein- und Ausgabe, sowie dem Einbinden von Dateien. Wird eine HTML-Datei angefordert, kann die Erzeugung der Datei wie folgt geschehen:

  • Statisch
  • Semistatisch
  • Dateidynamisch
  • Verzeichnisdynamisch

Statisch

Statische Seiten sind völlig normale HTML-Dateien. Sie beinhalten keine Gandalf-Elemente oder andere serverseitige Scripte oder Elemente. Gandalf erkennt automatisch, ob eine angeforderte Datei tatsächlich an der geforderten Stelle existiert und ob sie vom Parser bearbeitet werden muß oder ob sie einfach durchgereicht werden kann.

Semistatisch

Wird eine HTML-Datei angefordert, schaut der Parser nach, ob er diese Datei tatsächlich an der angeforderten Stelle findet. Ist sie vorhanden, wird geprüft, ob sie Gandalf-Elemente enthält. Ist dieses der Fall, werden nun der Reihe nach zuerst die Pre-Include Dateien eingebunden und ausgeführt, danach wird die eigentliche HTML-Datei eingebunden und abschließend die Post-Include Dateien.

Alle hiermit definierten Variablen werden dann abschließend in der letzten Post-Include-Datei zusammen mit (nahezu) normalem HTML-Code ausgegeben.

Beispiel:

Die Datei /software/download/gandalf.html wird angefordert. Dann passieren die folgenden Dinge:

  1. Es wird nachgesehen, ob die Datei auf dem Server existiert
  2. Ist sie vorhanden, wird nachgesehen, ob sie Gandalf-Elemente enthält
  3. Ist dies der Fall, wird eine eventuell existierende Datei /pre.inc eingebunden (Der Name ist in der Config-Datei veränderbar)
  4. Als nächstes wird die Datei /software/pre.inc eingebunden
  5. Gefolgt von /software/download/pre.inc
  6. Jetzt ist die Hauptdatei an der Reihe
  7. Die Datei /software/download/post.inc (Name natürlich änderbar) wird eingebunden
  8. Dann /software/post.inc (natürlich nur, wenn sie existiert)
  9. Und abschließend /post.inc. In dieser Datei nun werden die durch die anderen Dateien definierten Variablen endgültig ausgegeben

Dateidynamisch

Die dateidynamische Arbeitsweise arbeitet ähnlich wie die semistatische Methode. Mit einem Unterschied:

Wird die HTML-Datei nicht im Verzeichnis gefunden, wird nachgesehen, ob eine Datei mit dem Namen datatemplate.inc existiert. Ist dies der Fall, wird anstelle der HTML-Datei diese Datei aufgerufen, die restliche Arbeitsweise (einbinden der Pre- und Postdateien ist identisch)

Der Dateiname der eigentlich angeforderten Datei wird in die Variable dataitem geschrieben. Enthält diese Kommata, so ist dataitem ein Array, in dem sich die einzelnen Werte befinden, adressiert von "0" an.

Verzeichnisdynamisch

Wenn nicht einmal das Verzeichnis existiert, wird absteigend geprüft, ob eine der angeforderten Verzeichnisse in Wirklichkeit ein Script ist. Diesem Script werden die einzelnen Verzeichnisse in der Variablen dataitem übergeben.

Variablenhandling

Eingabe

Variablen bei Gandalf können auf verschiedene Wege geschrieben werden.

  • Einzeilig
  • Mehrzeilig
  • Spezielle Zeichen
  • Als Array
  • Durch die Übergabe per POST/GET

Einzeilige Werte

Um kleinere Werte zu definieren, verfährt man wie folgt:

<gdf:set var="titel" val="Gandalfs Philosophie"/>
Achtung! Aufgrund der Arbeitsweise des benutzten XML-Parsers ist es leider nicht möglich, Entitäten innerhalb von Attributswerten zu benutzen. Für solche Zwecke muß die Variable in der mehrzeiligen Definition geschrieben werden.

Mehrzeilige Werte

Mehrzeilige Werte werden zwischen das Startelement und Endelement geschrieben:

<gdf:set var="beschreibung">
Im folgenden Dokument beschreibe ich die Philosophie, die hinter Gandalf steckt,
dessen verschiedene Arbeitsweisen, die Art wie mit Variablen gearbeitet werden
kann, und vieles mehr.
<gdf:set/>

Spezielle Zeichen

Gandalf-Dateien werden durch einen XML-Parser verarbeitet, dementsprechend müssen die Dokumente auch valide sein. Es kann aber immer sein, daß Werte geschrieben werden müssen, die nicht valide sein können, wie zum Beispiel eine SQL-Abfrage, die < oder ähnliches enthält.

In diesem Fall kennt XML eine Lösung:

<![CDATA[select name,vorname from adressen where alter>]]>
<gdf:print var="dataitem[1]"/>
<![CDATA[and kinder>0]]>

Als Array

An einigen Stellen machen Array-Variablen einen Sinn. In Gandalf werden sie besonders im Datenbankbereich genutzt. Als Index kann dabei sowohl eine Zahl, als auch eine Zeichenfolge benutzt werden:

<gd_set var="dbname" index="newsliste" val="scn"/>
<gd_set var="dbname[newsliste]" val="scn"/>

Durch die Übergabe per POST/GET

Sollen zum Beispiel Variablen aus einem Formular in Gandalf weiterverwendet werden, so ist einfach nur das folgende Element am Anfang der Seite aufzurufen:

<gdf:get_vars/>

Dieses Element übernimmt alle Variablen, die übergeben wurden in Gandalf-Variablen. Dies geschieht in der Reihenfolge, daß eventuell gleichnamige GET-Variablen durch POST-Variablen überschrieben werden.

Ausgabe

Gandalf-Variablen können auf verschiedene Arten ausgegeben werden.

  • Innerhalb von Attributswerten
  • Mit dem print-Element
  • Als Entität

Innerhalb von Attributswerten

Wenn innerhalb von Elementen Werte aus Gandalf-Variablen übergeben werden sollen, sind die Variablennamen durch $ und . einzuschließen. Das abschließende . kann weggelassen werden, wenn außer der Variablen nichts übergeben wird.

<gdf:menu menu="$dabomenu" start="1" end="9" design="1"/>
<a href="$root.index.html">

Mit dem print-Element

Wenn innerhalb des normalen Textes Variablen ausgegeben werden sollen, kann dies über das print-Element erfolgen. Der Aufruf erfolgt ähnlich wie die Definition mit set:

<gdf:print var="keywords"/>

Als Entität

Wird im normalen Text eine Entität angesprochen, wird nachgesehen, ob es eine gleichlautende Variable gibt. Diese Methode funktioniert nicht innerhalb von Attributswerten oder mit Array-Variablen.

<p class="vorbemerkung">
&vorbemerkung;
</p>

Empfohlene Arbeitsweise

Gandalf schreibt nicht vor, wie der Anwender mit ihm zu arbeiten hat, aber möchte hier darstellen, wie ich persönlich arbeite.

Ich definiere mir Variablen, die für wechselnde Inhalte wie den Body, den Titel oder die Meta-Tags stehen. Diese Variablen werden dann erst in der letzten Datei, der Post-Include Datei im Hauptverzeichnis mit HTML-Code ausgegeben.

Genaueres später. Schaut solange in den Quelltext der mitgelieferten Dateien.

designed by musteradresse.com Impressum Erstellt von: Michael Vogel