TPLE - Eigene Template Engine

 

 

TPLE - die Templateengine von PowerSite

Unsere Templateengine hat nur rund 110 Zeilen, besteht aus nur 7 Funktionen und einer Hilfsfunktion und man kann damit alles das machen was z.B. die Engine Smarty mit erheblich umfangreicheren Code leistet und sogar noch erheblich mehr.

Es verwendet PHP pur - einfach aus dem Grunde weil PHP selbst im Ursprung als Templatenegine entwickelt wurde.

Dank dem Einsatz der PHP Kontrollstrukturen ist TPLE derart vielseitig, das keine Wünsche übrig bleiben.

Sie werden es sehen !

Wozu eine Templateengine ?

Der ursprüngliche Gedanke zum Einsatz einer Engine - nämlich die vollständige Trennung von Code und Design ist im Prinzip überholt, ja sie wurde von keiner einzigen bekannten Templateengine jemals erreicht.

Engines wie Smarty gingen dabei sogar noch den Weg eine eigene Programmiersprache zu entwickeln die letzten Endes wieder in PHP umgesetzt wurde.

Es gibt heute praktisch keinen Webdesigner der nicht über PHP - Kenntnisse verfügt.

Clientseitige - und serverseitige Programmierung steht längst in den Lehrplänen von Webdesignern !

Warum also eine Templateengine ?

Grundsätzliche Trennung der Hauptprogrammierung vom Design - mit der Öffnung zur Nebenprogrammierung.


Eine solche Templateengine bietet einem Webdesigner sämtliche nur vorstellbare Möglichkeiten.

Und genau das ist das Ziel von TPLE, was auch bis zur Perfektion erreicht wird.

Kode im Design, Kode im Inhalt

Mit TPLE ist man in der Lage Kode direkt überall dort einsetzen zu können wo es einen Sinn macht.

Über Plugins können ganze neue Funktionalitäten eingebracht werden durch simple Einbindung an der Stelle wo man es benötigt.

Und das ohne jegliche Installation - einfach rein damit und gut ist.

Man kann diese Plugins auch wie eine kleine Hauptprogrammierung verstehen, denn die Ausgaben selbst werden vom Designer ebenfalls über Plugin - Parameter und vor allem über die Templates zu den Plugins bestimmt und die kann der Designer frei gestalten.

Noch vor kurzer Zeit waren Webdesigner Leute die mehr oder weniger lediglich am Design gebastelt hatten - nun gehören aber auch Funktionen zum Design und das ist neu.

So arbeiten heute Designer. Und TPLE - unsere eigene Templateengine - ist so erstaunlich klein und leistungsfähig, das der aktuelle Webdesigner damit auch einen technischen Fortschritt hat.

Highspeed Templateengine für Highspeed - Anwendungen

Die Funktionen

trimwhitespace

Dabei handelt es sich um einen Filter, der im Standard von PowerSite eingesetzt wird um überflüssige Leerzeichen und Zeilenvorschübe zu entfernen.

trimwhitespace_replace

Das ist eine Hilfsfunktion die für trimwhitespace benötigt wird.

assign

Diese Funktion übernimmt die Zuweisung an den Speicher von TPLE, der in Templates und Inhalten über
$this->VARS['name_der_variable']
erreicht werden kann.

In Plugins erfolgt der Zugriff über die Variable $tpl, die global impoertiert werden muss, z.B. global $tpl; Zugriff dann $tpl->VARS['name_der_variable'].

Die Funktion hat zwei Parameter

Es können sämtliche Variablentypen übergeben werden, die PHP kennt.

display

Kennt als Parameterwert nur den vollständigen Pfad zu einem Template - dieses wird einfach included.

vardisplay

Es wird eine Variable erwartet - diese wird über PHP eval ausgeführt. Dient also dazu Variable wie ein Template zu behandeln.

fetch

Hat maximal zwei Parameter 1. den Namen des Templates und 2. true oder false (default true) ob trimwhitespace eingesetzt werden soll.

Verarbeitet das Template über die Funktion varfetch und gibt den erzielten Inhalt zurück.

varfetch

Als Parameter wird eine Variable übergeben, welche die Inhalte eines Templates enthält. Verarbeitet das mit PHP eval und gibt den neuen Inhalt zurück.

plugin

Kennt zwei Parameter - den Namen des Plugins und die Parameter. Die Parameter sind als Array zu übergeben.
Führt ein include des Plugins durch und verarbeitet das Plugin mit PHP über eval und gibt den erzielten neuen Wert zurück.

Alle Inhalte sind Templates !

Das ist das einfache aber geniale System von TPLE. Ob es sich nun um das eigentliche Haupttemplate handelt oder eine Seite oder sonst etwas, alles wird als Template verstanden und verarbeitet.

Somit kann TPLE an jeder Stelle genutzt werden. Ja selbst Plugins die widerum Templates aufrufen erscheinen in der Seite so wie es sein soll und das alles in einem enormen Tempo.

Welche Kenntnisse sind erforderlich ?

Nur die ein Webdesigner sowieso hat - HTML und PHP.

Eigene Plugins schreiben - ganz leicht

Das Grundgerüst eines eigenen Plugins für TPLE ist eine normale PHP Funktion die so aussieht:

if (!defined('INSIDE_POWER_SITE')) die ('DIRECT ACCESS FORBIDDEN');

function meine_eigene_funktion($params)
{ global $tpl;

}

Das ganz ist unter dem Namen meine_eigene_function.php im Plugin- Ordner zu speichern.

Wenn noch andere Dinge wie DB - Verbindungen etc. eingesetzt werden sollen, dann muss die global Deklarierung mit den Variablen-Bezeichner erweitert werden.

Die normale Variante ist die, das man mit dem Plugin etwas macht und das Ergebnis dann über ein Template darstellt.

Die andere Variante ist die, das ein Plugin lediglich die Zuweisung macht und die daraus erzeugten Variable an anderer Stelle von Templates aber auch von anderen Plugins genutrzt wird.

Bei einer Ausgabe ist die direkte Ausgabe zwar möglich, aber verpönt.

Man möchte schliesslich nicht jedes mal wenn die Optik geändert werden soll, in den Kode eingreifen müssen.

Soll eine Ausgabe über ein Template erfolgen sieht es dann so aus:

if (!defined('INSIDE_POWER_SITE')) die ('DIRECT ACCESS FORBIDDEN');

function meine_eigene_funktion($params)
{ global $tpl;

// etwas machen und die Ergebnisse an TPLE zuweisen.
$tpl->display('mein_template.tpl.php');
}

Plugins zur Verwendung mit Xajax

Die sind genauso, jedoch darf es zu keinerlei Ausgabe kommen, denn die muss Xajax machen !
Kommt es zu einer Ausgabe wird Xajax nicht funktionieren, da alle Ausgaben von Xajax abgefangen werden und als Whitespaces zum Fehler und Abbruch führen.

Soll nun ein Plugin mit Xajax verwendet werden darf es also kein display geben, es muss eine Rückgabe erfolgen und das macht man mit einem
return $tpl->fetch('mein_template.tpl.php');

Im korrespondierendem Xajax - Plugin muss das eine Zuweisung sein.

Man muss immer berücksichtigen, das Xajax ein auf Javascript basierendes Ajax ist, das mit PHP angesteuert werden kann.

Xajax verbindet also zwei vollständig andere Welten - Javascript wird auf dem Client ausgeführt und PHP auf dem Server.

Am besten Sie schauen sich das in der Demo mitgelieferte Xajaxplugin suchen.php an , wie auch die weiteren, die im Ordner xplugins liegen.

TPLE und Xajax sind von Vorteil

Xajax bzw. Ajax ist in der Lage Teilbereiche einer Seite mit neuen Inhalten aufzufrischen, ohne das die Seite selbst neu geladen wird !

PowerSite mit TPLE ist so aufgebaut das genau dies direkt unterstützt wird.
Xajax selbst ist zudem einfach zu beherrschen und erfordert normal keinerlei Javascript - Kenntnisse.

Die damit erzeugbaren Eindrücke bei den Besuchern sind enorm , ebenso die Verringerung der Serverbelastung.

Xajax kostet etwas Zeit beim Laden der Seite und auch etwas RAM, unterm Strich aber macht sich der geringe Zusatzbedarf mehr als bezahlt.

Versuchen Sie die in der Demo gezeigten Beispiele zu begreifen und eigene Dinge zu realisieren. Sie werden sehen - es ist einfacher als man meint.

Letzte Änderungen

PowerSite - ein extrem flexibles PHP Framework
Geändert: 04.06.2009
Demo - PlugIn - csv
Geändert: 04.06.2009
Demo Feeds grabben / auslesen
Geändert: 04.06.2009
Bildergalerie (Standard)
Geändert: 04.06.2009
Demo: csv und eMail kombinieren
Geändert: 04.06.2009