Home / Templates
Die Template Engine von dbXwebApp unterscheidet sich von den meisten anderen Systemen grundlegend.
Nahezu Alles, was HTML ist, wird bei dbXwebApp durch Templates zur Verfügung gestellt.
In dbXwebApp bestehen alle Templates aus purem HTML / xHTLM. Es gibt nur ein paar Befehle die innerhalb des HTML Inhaltes nur in Ausnahmefällen angegeben werden können.
Eine wesentliche Eigenschaft vom System ist es, ein Template in Bereiche einteilen zu können.
So werden z.B. alle Listen jeweils durch nur ein Template definiert. Das Template kann dann in Header / Body und Footer Bereich aufgeteilt werden. Jedes Template lässt sich im online Editor bearbeiten.
Der Listengenerator gibt dann zuerst den Header-Bereich, dann n mal den Body-Bereich und zuletzt den Footer-Bereich aus.
In jedem Bereich können wieder beliebige Modulaufrufe (auch Listen) und auch beliebiige weiter Templates "includiert" werden.
Grundsätzlicher Ablauf vom System:
Jeder Aufruf, jedes Modul, kann ein unterschiedliches Design-Template nutzen. Für PopUps, Druckausgabe, PDFs u.s.w. werden automatisch die entsprechenden Templates genutzt.
Ausgaben von Modulen können immer und überall* dort eingefügt werden, wo sie dann auch erscheinen sollen. Alle Module können visuell als Bild in den Inhalt (Content) eingefügt werden. Diese Modul-Bilder sind "Platzhalter" und sie werden vom System durch die jeweilige Ausgabe der Module ersetzt.
Dabei kann sowohl die Position als auch die Größe der Modulausgabe durch das Bild definiert werden. Auch können dabei alle benötigten Parameter mit angegeben werden.
Für alle verwendeten db-Tabellen und deren Felder werden vom System automatisch die entsprechenden Platzhalter erstellt. Dabei wird automatisch berücksichtigt welche Inhalte (von db-Felder) der jeweilige Benutzer sehen/bearbeiten darf. Weiter benötigte Platzhalter können jeder Zeit einfach definiert werden.
Bei dbXwebApp können Vorlagen, je nach Verwendung, in der Datenbank oder im Dateisystem gespeichert werden.
Alle Vorlagen, die aus der Datenbank kommen, können selbstständig Anweisungen durchführen. Diese aktiven Vorlagen reagieren auf verschiedene Ereignisse. Sie übersetzen sich selbstständig (anhand der Übersetzungs-Tabelle) und können z.B. benötigte Auswahllisten bei Bedarf erstellen.
Ansicht Template bearbeiten für eine Liste (Report):
Ansicht Template bearbeiten für eine Eingabeformular (Adressdaten):
1. In jedem Template können beliebig viele Modul und Funktionsaufrufe im Inhalt stehen.
[modul=modul_name]parameter1=wert1¶meter2=wert2&override=1¶meter3=wert3[/modul]
Alle Parameter die vor override=1 stehen werden statisch an das Modul übergeben. Alle Parameter nach override=1 können durch die entsprechenden POST oder GET Parameter überschrieben werden.
Innerhalb jeder Modulausgabe können wiederum beliebig viele Modulaufrufe stehen, die dann vom System ausgewertet werden.
In den meisten Fällen wird die logische Steuerung und das Ausführen von Funktionen durch die jeweiligen Module komplett selbst übernommen. Innerhalb der Module gibt es ein paar sehr einfache Befehle, welche die Nutzung von Templates sehr einfach machen.
2. In Inhalten und Templates können weitere Templates an jeder beliebigen Stelle includiert werden.
[inc=123]dbx_page 123 vom aktivem Modul wird includiert[/inc]
[inc=123,dbx_global]dbx_page 123 von der db-Tabelle dbx_pages_dbx_globals wird includiert[/inc]
3. Inhalte können auch nur einmalig includiert werden. Auch wenn diese Anweisung mehrfach im Inhalt steht wird die Page 123 nur 1 * includiert.
[inc_once=123]Template Page 123 wird includiert[/inc]
4. Content includieren, ist ein Alias für [modul=dbx_content]cid=123&op=show[/modul]
[cid=123]Inhalt von dbx_content ID 123[/cid]
5. Bedingtes Einfügen von Inhalten. Die Page 123 wird nur includiert wenn die angegebene Function true zurück gibt.
[inc_if=accepted_function(parameter);]123[/inc]
Durch das bedingte "Includieren" kann die Ausgabe je nach Parametern, Daten, Benutzergruppe u.s.w gesteuert werden.
6.Funktione können direkt aus dem Inhalt heraus aufgerufen werden.
[inf=1]accepted_function(parameter);[/inf]
7. Funktione können auch nur einmalig includiert werden. Auch wenn diese Anweisung mehrfach im Inhalt.
[inf_once=1]dbx_GetRows(dbx_content_admin,dbx_content_folder,parent_id=0,name,ASC,990,0,4);[/inf]
[inf=1] , [inf_if=...], und [inf_once..] können nur Funktionen aufrufen, die im Kernel oder im aktivem Modul definiert sind.
Der jeweilige Aufruf wird vom System durch den Rückgabewert der jeweiligen Funktion ersetzt.
Die Verwendung der Templates innerhalb von Modulen ist denkbar einfach.
Insbesondere durch die Verwendung folgender zwei leistungsfähigen Funktionen.
Beispiel:
Mit der folgenden Funktion wird im Modul dbx_user die Adresse des jeweils aktiven Benutzers in einem Eingabeformular angezeigt.
Diese Ausgabe der Adressdaten kann dan als aktives Modul mit
dbxWebApp.php/dbx_modul/dbx_user/op/adress
oder aus dem Design-Template und auch aus jedem Modultemplate mit
[modul=dbx_user]op=adress[/modul]
aufgerufen werden.
dbXwebApp beinhaltet einen leistungsfähige Engine für die Verarbeitung von Templates.
Diese Template-Engine wertet jeden Inhalt aus, den das System oder die Module ausgeben.
Diese Inhalte werden nach Funktions- und Modulaufrufen ausgewertet und die jeweiligen Aufrufe werden mit der Ausgabe der jeweiligen Funktion b.z.w. Moduls ersetzt.
Jede Ausgabe kann wieder Funktions- und Modulaufrufe beinhalten. Dadurch sind auch tief verschachtelte Strukturen einfach möglich.
Ein sehr gutes Beispiel für den Nutzen dieses Systems ist z.B die Baumdarstellung der db-Templates im Admin-Bereich.
Obwohl die dort dargestelle Liste recht komplex ist besteht sie nur aus einfachen Modulaufrufen die ineinander verschachtelt sind.
Dadurch ist für diese Liste auch keine komplizierte SQL Anweisung nötig.

* accepted function = Die Template-Enginer erlaubt nur Funktionen die im Kernel oder in einem aktiven Modul definiert sind.
Anstelle einer Funktion kann auch der Wert 1 oder 0, b.z.w. ein Platzhalter der dann diesen Wert hat, angegeben werden.
Templates
dbXwebApp Templates
Die Template Engine von dbXwebApp unterscheidet sich von den meisten anderen Systemen grundlegend.
Nahezu Alles, was HTML ist, wird bei dbXwebApp durch Templates zur Verfügung gestellt.
In dbXwebApp bestehen alle Templates aus purem HTML / xHTLM. Es gibt nur ein paar Befehle die innerhalb des HTML Inhaltes nur in Ausnahmefällen angegeben werden können.
Eine wesentliche Eigenschaft vom System ist es, ein Template in Bereiche einteilen zu können.
So werden z.B. alle Listen jeweils durch nur ein Template definiert. Das Template kann dann in Header / Body und Footer Bereich aufgeteilt werden. Jedes Template lässt sich im online Editor bearbeiten.
Der Listengenerator gibt dann zuerst den Header-Bereich, dann n mal den Body-Bereich und zuletzt den Footer-Bereich aus.
In jedem Bereich können wieder beliebige Modulaufrufe (auch Listen) und auch beliebiige weiter Templates "includiert" werden.
Grundsätzlicher Ablauf vom System:
- Über GET oder POST kann ein Modul aktiv aufgerufen werden. Wenn kein Modul angegeben wurde, wird automatisch dbx_home aktiviert.
- Das jeweils aufgerufene Modul kann festlegen welches Design-Template genutzt werden soll.
Ansonsten wird das Design-Template mit dem Namen vom aktiven Modul genommen, falls über den Parameter dbx_template kein anderes Design-Template angegeben wurde. Falls das jeweils so ermittelte Design-Template nicht vorhanden ist, wird automatisch das Design-Template default.htm genutzt. - Im Design-Template wird der Platzhalter {modul_content} durch den Rückgabewert des jeweils aktiv aufgerufene Moduls ersetzt.
- Das Design Template wird interpretiert.
Alle Modulaufrufe [..] werden mit den Rückgabewerten der jeweiligen Module ersetzt.
Alle Platzhalter {...} werden mit Ihren Werten ersetzt - Dar Inhalt des jeweilige Design-Template inclusiv aller Erstzungen wird an den Browser übertragen.
Jeder Aufruf, jedes Modul, kann ein unterschiedliches Design-Template nutzen. Für PopUps, Druckausgabe, PDFs u.s.w. werden automatisch die entsprechenden Templates genutzt.
Ausgaben von Modulen können immer und überall* dort eingefügt werden, wo sie dann auch erscheinen sollen. Alle Module können visuell als Bild in den Inhalt (Content) eingefügt werden. Diese Modul-Bilder sind "Platzhalter" und sie werden vom System durch die jeweilige Ausgabe der Module ersetzt.
Dabei kann sowohl die Position als auch die Größe der Modulausgabe durch das Bild definiert werden. Auch können dabei alle benötigten Parameter mit angegeben werden.
Für alle verwendeten db-Tabellen und deren Felder werden vom System automatisch die entsprechenden Platzhalter erstellt. Dabei wird automatisch berücksichtigt welche Inhalte (von db-Felder) der jeweilige Benutzer sehen/bearbeiten darf. Weiter benötigte Platzhalter können jeder Zeit einfach definiert werden.
Bei dbXwebApp können Vorlagen, je nach Verwendung, in der Datenbank oder im Dateisystem gespeichert werden.
Alle Vorlagen, die aus der Datenbank kommen, können selbstständig Anweisungen durchführen. Diese aktiven Vorlagen reagieren auf verschiedene Ereignisse. Sie übersetzen sich selbstständig (anhand der Übersetzungs-Tabelle) und können z.B. benötigte Auswahllisten bei Bedarf erstellen.
Ansicht Template bearbeiten für eine Liste (Report):
Bei Verwendung dieses Templates als Report werden die eingetragenen Funktionen
bei On_report für jeden Datensatz automatisch ausgeführt.
bei On_report für jeden Datensatz automatisch ausgeführt.
Die Liste, die mit diesem Template generiert wird, können Sie im Bereich Downloads sehen
Anweisungen die innerhalb eines Templates stehen können.
1. In jedem Template können beliebig viele Modul und Funktionsaufrufe im Inhalt stehen.
[modul=modul_name]parameter1=wert1¶meter2=wert2&override=1¶meter3=wert3[/modul]
Alle Parameter die vor override=1 stehen werden statisch an das Modul übergeben. Alle Parameter nach override=1 können durch die entsprechenden POST oder GET Parameter überschrieben werden.
Innerhalb jeder Modulausgabe können wiederum beliebig viele Modulaufrufe stehen, die dann vom System ausgewertet werden.
Die folgenden Funktionen werden nur in Ausnahmefällen genutzt.
In den meisten Fällen wird die logische Steuerung und das Ausführen von Funktionen durch die jeweiligen Module komplett selbst übernommen. Innerhalb der Module gibt es ein paar sehr einfache Befehle, welche die Nutzung von Templates sehr einfach machen.
2. In Inhalten und Templates können weitere Templates an jeder beliebigen Stelle includiert werden.
[inc=123]dbx_page 123 vom aktivem Modul wird includiert[/inc]
[inc=123,dbx_global]dbx_page 123 von der db-Tabelle dbx_pages_dbx_globals wird includiert[/inc]
3. Inhalte können auch nur einmalig includiert werden. Auch wenn diese Anweisung mehrfach im Inhalt steht wird die Page 123 nur 1 * includiert.
[inc_once=123]Template Page 123 wird includiert[/inc]
4. Content includieren, ist ein Alias für [modul=dbx_content]cid=123&op=show[/modul]
[cid=123]Inhalt von dbx_content ID 123[/cid]
5. Bedingtes Einfügen von Inhalten. Die Page 123 wird nur includiert wenn die angegebene Function true zurück gibt.
[inc_if=accepted_function(parameter);]123[/inc]
Durch das bedingte "Includieren" kann die Ausgabe je nach Parametern, Daten, Benutzergruppe u.s.w gesteuert werden.
6.Funktione können direkt aus dem Inhalt heraus aufgerufen werden.
[inf=1]accepted_function(parameter);[/inf]
7. Funktione können auch nur einmalig includiert werden. Auch wenn diese Anweisung mehrfach im Inhalt.
[inf_once=1]dbx_GetRows(dbx_content_admin,dbx_content_folder,parent_id=0,name,ASC,990,0,4);[/inf]
[inf=1] , [inf_if=...], und [inf_once..] können nur Funktionen aufrufen, die im Kernel oder im aktivem Modul definiert sind.
Der jeweilige Aufruf wird vom System durch den Rückgabewert der jeweiligen Funktion ersetzt.
Templates innerhalb von Modulen
Die Verwendung der Templates innerhalb von Modulen ist denkbar einfach.
Insbesondere durch die Verwendung folgender zwei leistungsfähigen Funktionen.
- $template_content=dbx_Get_Page("modul,id");
Diese Funktion gibt den Inhalt eines db-Templates als String zurück.
Dabei werden alle mit dem jeweiligem Template verbundenen Funktionen automatisch ausgeführt.
Dazu gehört auch eine mögliche automatische sprachliche Übersetzung.
Alle vorhandenen Daten werden in das Template eingemischt.
Wenn Template-Anweisungen [.. .] im Template Content stehen werden diese ausgewertet.
. - $template_content=dbx_get_DataPage("modul,id","db-table","sql-where");
Diese Funktion verhält sich wie dbx_Get_Page mit der Erweiterung, dass ein bestimmter Datensatz vorher
ausgewählt wird und dessen Daten zusätzlich in das Template eingemischt wird.
.
Beispiel:
Mit der folgenden Funktion wird im Modul dbx_user die Adresse des jeweils aktiven Benutzers in einem Eingabeformular angezeigt.
001 public function adress() {
002 global $current_user;
003 $uid=$current_user['current_user__id']; // Ermittlung der ID des aktuellen Benutzers
004 $dbx_page=dbx_get_mcv("dbx_user","adress"); // Ein vom Modul konfigurierbarer Wert, der die ID einer Page ist.
005 $content=dbx_get_DataPage($dbx_page,"dbx_user",$uid); // Template laden und Adressdaten einmischen.
006 return $content; // Inhalt an das System zurückgeben.
007 }
Diese Ausgabe der Adressdaten kann dan als aktives Modul mit
dbxWebApp.php/dbx_modul/dbx_user/op/adress
oder aus dem Design-Template und auch aus jedem Modultemplate mit
[modul=dbx_user]op=adress[/modul]
aufgerufen werden.
Template-Engine
dbXwebApp beinhaltet einen leistungsfähige Engine für die Verarbeitung von Templates.
Diese Template-Engine wertet jeden Inhalt aus, den das System oder die Module ausgeben.
Diese Inhalte werden nach Funktions- und Modulaufrufen ausgewertet und die jeweiligen Aufrufe werden mit der Ausgabe der jeweiligen Funktion b.z.w. Moduls ersetzt.
Jede Ausgabe kann wieder Funktions- und Modulaufrufe beinhalten. Dadurch sind auch tief verschachtelte Strukturen einfach möglich.
Ein sehr gutes Beispiel für den Nutzen dieses Systems ist z.B die Baumdarstellung der db-Templates im Admin-Bereich.
Obwohl die dort dargestelle Liste recht komplex ist besteht sie nur aus einfachen Modulaufrufen die ineinander verschachtelt sind.
Dadurch ist für diese Liste auch keine komplizierte SQL Anweisung nötig.

* accepted function = Die Template-Enginer erlaubt nur Funktionen die im Kernel oder in einem aktiven Modul definiert sind.
Anstelle einer Funktion kann auch der Wert 1 oder 0, b.z.w. ein Platzhalter der dann diesen Wert hat, angegeben werden.
UID=1 Restzeit=* Sec - Sprache: en Design: default Vers: 3.0.8b (c) 2006-2009 - dbXwebApp.org - (Speed=0.00196 Sec Querys=0 Cache=FCA )