dbxTPL ist die Template-Schicht von dbxapp. Sie trennt Ausgabe von Fachlogik. PHP bereitet Daten vor, Templates bestimmen Struktur, Positionierung und Einbindung.
Einordnung im Golden Path
Das durchgängige Modulbeispiel steht unter Verbindliches Modulhandbuch. Dieses Kapitel vertieft ausschließlich die Template-Fähigkeiten.
dbxTPL lädt keine Fachdaten und mutiert keine Datensätze. Werte aus den dbx-Pipelines werden ohne lokale Escape-Hilfsfunktionen eingesetzt. Ein zusätzliches Escaping ist nur notwendig, wenn eine tatsächlich rohe Fremdeingabe außerhalb der vorhandenen Feld-, Report- oder Komponentenpipeline als literaler HTML-Text ausgegeben werden soll.
Speicherorte
Modul-Templates liegen hier:
Templates koennen sprachabhaengig sein. Wenn die aktive Sprache z.B. de ist, versucht dbxTPL zuerst die Sprachdatei und faellt dann auf die neutrale Datei zurueck:
Damit koennen Labels, feste Ueberschriften und kleine Hilfetexte im Template sprachspezifisch gepflegt werden, ohne den Modulcode zu verzweigen.
System-Templates liegen meist im Modul dbx:
Template laden
dbxContact|ticket-row bedeutet:
Marker ersetzen
Template:
PHP:
Ergebnis:
Objekte einsetzen
dbxForm und dbxReport koennen Objekte in Templates einsetzen:
PHP:
Template-Aufteilung mit dbx_split
Einige dbxapp-Komponenten lesen nicht nur ein Template als Ganzes, sondern teilen es in Bereiche auf. dbxReport verwendet dafuer den Marker:
Ein typisches Report-Template aus dbxAdmin|report-sysmsg:
Die Bereiche bedeuten:
- Vor dem ersten dbx_split: Header, z.B. Tabellenkopf.
- Zwischen erstem und zweitem dbx_split: Body/Row-Template, wird pro Datensatz wiederholt.
- Nach dem zweiten dbx_split: Footer oder nachgelagerte Reportstruktur.
Bei Templates mit mehr Split-Markern kann dbxReport zusaetzlich Header/Footer fuer Folgeseiten unterscheiden. Wichtig ist: Die Aufteilung gehoert ins Template. Der Report wertet sie aus.
Modul-Inclusion
Templates duerfen Module einbinden:
Der dbxInterpreter fuehrt diesen Modulaufruf bei der Seitenausgabe aus.
DesignPage, Page und Content-Templates
Ein typischer Aufbau:
DesignPage definiert den aeusseren Rahmen: Navigation, Hauptbereich, Footer, CSS/JS-Positionen.
Page-Templates definieren Seitentypen: Standardseite, Landingpage, Adminseite, Dashboard.
Content-Templates definieren konkrete Inhaltsbloecke: Hero, Body, Galerie, Footer.
Modul-Templates definieren Fachbereiche: Report, Formular, Toolbar, Panel.
CMS-Templates koennen Content ueber einfache Marker in Bereiche und Spalten aufteilen:
Der CMS-Renderer verteilt den redaktionellen Inhalt auf diese Slots. Dadurch kann eine CMS-Seite ohne eigenen PHP-Code einspaltig, zweispaltig, dreispaltig, mit Header, Hero, Galerie und Footer ausgegeben werden.
Positionierung
Positionierung gehoert in Templates und CSS, nicht in Controllerlogik.
Gut:
Nicht gut:
dbx_edit=1 und dbx_edit=2
dbx_edit=1 und dbx_edit=2 markieren editierbare Bereiche in der gerenderten Seite. Die Webseite wird weiterhin normal ausgegeben. Der Interpreter bleibt aktiv.
Wichtig:
- In der Webseite werden [modul=...] ausgefuehrt.
- Im Template-Editor selbst wird Rohtext angezeigt.
- Marker wie {title} bleiben im Template-Editor sichtbar.
- Der Editor darf nicht die gerenderte Ausgabe speichern.
Regeln
- Keine langen HTML-Strings in PHP.
- Templates beschreiben Struktur.
- PHP liefert Daten, Status und Aktionen.
- Keine pauschalen Escape-Wrapper um normale DD-, Form- oder Reportwerte.
- Alles, was wiederverwendbar ist, bekommt ein eigenes Template.
- Dashboard-Templates sollen nur Aufteilung enthalten und Fachbereiche per [modul=...] einbinden.