Handbuch für Template-Programmierer
camindo CMS liefert Inhalte mittels Templates aus, beispielsweise HTML auf einer Website. CMS-Befehle bereiten Inhalte auf und fügen diese dynamisch im Template ein. Beispiel für ein stark vereinfachtes Seitentemplate:
<html>
<body>
<h1>(CMS:TEXT title)</h1>
<div>(CMS:TEXT text)</div>
<div>(CMS:MEDIA field=bild_klein attr[id]=bild1)</div>
<div>erstellt: (CMS:DATE created_at format="dd.MM.y")</div>
</body>
</html>
CMS-Befehle dienen dabei nicht nur als Platzhalter. Sie stellen komplexe gekapselte Funktionalitäten dar, die mittels Parametern angepasst und miteinander kombiniert werden können. Das spart viel Entwicklungszeit. Zudem sind sie erprobt und gewährleisten Stabilität.
Beispiele dafür, was CMS-Befehle leisten:
- Inhalte bestimmter Kriterien aus der Datenbank ermitteln
- Inhalte aufbereiten
- Benutzereingaben prüfen, speichern oder versenden
- Registrierung von Websitebesuchern, An- und Abmeldung
- weitere Templates einbinden
Ausgabeformate: Neben Websites mit HTML-Seiten sind weitere Ausgabemedien und Publikationswege möglich. Inhalte können etwa als XML-Dateien, PDF-Dateien, E-Mails… formatiert werden und über eine URL zum Abruf bereitgestellt, als Dateien ins Dateisystem geschrieben oder über ein Netzwerk geschoben werden.
Template-Satz: Nicht jeder muss das Rad neu erfinden. Inhaltsbereiche (ihre Konfiguration inkl. Eingabefeldern, auf Wunsch mit Inhalten) und die zugehörigen Templates können im XML-Format exportiert werden. Beim Import in eine andere camindo-Installation bleiben die Beziehungen zwischen Bereichen und Templates bestehen. Der komplette Anwendungsteil ist sofort einsatzbereit. Das ermöglicht die einfache Integration fertiger Bausätze (Forum, Newsfeed, ...) oder auch den Export selbst entwickelter Anwendungen für die Wiederverwendung in späteren Projekten.
Inhalt
- Grundlagen – wie eine Seite entsteht, Adressen, Syntax, Listen, Verknüpfungen, das Konzept „jeder Datensatz hat eine Seite“, Filter, Mehrsprachigkeit, Sicherheits-Header (CSS/JS/JSON ausliefern, Einbetten in Partnerwebsites), zeitgesteuerte Templates, Templates im Dateisystem
- Template-Sätze – Funktionen kapseln, portabel halten, weitergeben und anpassen
- Trigger-Templates – PHP-Methoden für die Ereignisse der Datensätze eines Bereichs (Speichern, Löschen …) und für die Aktionen der Lösch-Policies
- Befehlsreferenz – eine Seite je Befehl (unten)
Wie Templates im Backend organisiert und den Inhaltsbereichen zugewiesen werden, beschreibt das Handbuch für Administratoren.
Befehlsreferenz
(CMS:BEFEHL wert parameter=wert parameter[schlüssel]="wert" …)
Befehlsname und Parameternamen sind unabhängig von Groß- und Kleinschreibung. Der
erste Wert ohne = gilt als Hauptparameter des Befehls ((CMS:TEXT titel) =
(CMS:TEXT field=titel)). Werte in Anführungszeichen dürfen PHP-Ausdrücke enthalten,
so wie sie in einem PHP-String üblich sind ("{$set['x']}").
Ausgabeparameter sind bei den meisten Befehlen dieselben:
ifempty (Ersatz bei leerem Wert),
instead (Ersatz bei nicht leerem Wert),
prefix / suffix (nur bei nicht leerem Wert),
set (Ergebnis wird in die Variable $set[…] geschrieben, statt auf die Seite),
id (anderer Datensatz als Quelle),
replace (Teiltexte ersetzen) bei TEXT, DATE, DATETIME, TIME und NUMBER.
Ausgabe
| Befehl | |
|---|---|
| CMS:DATE | Datum ausgeben |
| CMS:DATETIME | Datum und Uhrzeit ausgeben |
| CMS:EMAIL | E-Mail versenden, Formular-Pflichtfelder prüfen |
| CMS:MEDIA | Bild oder Mediendatei ausgeben |
| CMS:MESSAGE | Fehlermeldungen ausgeben |
| CMS:NUMBER | Numerischen Inhalt ausgeben |
| CMS:RAW | Inhalt unformatiert ausgeben |
| CMS:SNIPPET | Snippet (Textbaustein) in der Sprache des Aufrufs ausgeben |
| CMS:TEXT | Textinhalt ausgeben |
| CMS:TIME | Uhrzeit ausgeben |
| CMS:URL | URL eines Datensatzes erzeugen |
| CMS:XML | XML-Deklaration ausgeben |
| CMS:ZIP | Dateien mehrerer Datensätze als ZIP-Archiv herunterladen |
Verknüpfungen
| Befehl | |
|---|---|
| CMS:RELATION | Hauptfeld verknüpfter Datensätze ausgeben (nur für interne Vorschau!) |
Abfragen
| Befehl | |
|---|---|
| CMS:SELECT | Datensätze abfragen |
| CMS:SELECT_LANGVERSION | Sprachen der Instanz als Ergebnismenge |
| CMS:RESULT_START | Beginn der Ergebnisschleife |
| CMS:RESULT_END | Ende der Ergebnisschleife |
Navigation
| Befehl | |
|---|---|
| CMS:JUMP_LIST | Blätter-Navigation erzeugen |
| CMS:JUMP_NEXT | Weiterblättern-Verweis erzeugen |
| CMS:JUMP_PREV | Zurückblättern-Verweis erzeugen |
Steuerung
| Befehl | |
|---|---|
| CMS:CONTINUE | Nach einem Success-Template weitermachen |
| CMS:CSP | Script-Policy (CSP) der Seite anpassen |
| CMS:HEADER | HTTP-Header senden |
| CMS:INCLUDE | Template einbinden, wahlweise mit Ausgabe-Cache |
| CMS:NONCE | Nonce für per PHP erzeugte Scripts |
| CMS:SAVEDATA | Datensatz in einer PHP-Variable ablegen |
Frontend-Editing
| Befehl | |
|---|---|
| CMS:FED | Bearbeiten-Verweis bei Frontend-Editing |
| CMS:FED_CODE | HTML nur bei Frontend-Editing ausgeben |
| CMS:FED_SCRIPT | Script für die Bearbeiten-Verweise (einmal je Seite) |
Community
| Befehl | |
|---|---|
| CMS:USER_2FA | Zweiten Faktor verwalten |
| CMS:USER_AUTH | Session des Frontend-Users prüfen |
| CMS:USER_BASKET | Warenkorb bearbeiten |
| CMS:USER_DELETE | Datensatz des Users löschen |
| CMS:USER_INPUT | Datensatz aus Usereingaben speichern |
| CMS:USER_LOGIN | Frontend-User anmelden |
| CMS:USER_LOGIN_CODE | Anmeldung mit zweitem Faktor abschließen |
| CMS:USER_LOGOUT | Frontend-User abmelden |
| CMS:USER_PASSWORD_RULES | Passwort-Regeln für die Anzeige im Formular |
| CMS:USER_REGISTER | Frontend-User registrieren (Profil-Datensatz anlegen) |
| CMS:USER_REGISTER_CONFIRM | Registrierung freischalten |
| CMS:USER_PROTECT | Template für nicht angemeldete Besucher sperren |
| CMS:USER_PW | Passwort-Reset vorbereiten |
| CMS:USER_TOKEN | Sicherheits-Token für Formulare |
Die Community-Funktionen richtet der Administrator ein (siehe Handbuch für Administratoren).
Zusatzmodul PDF
Das Zusatzmodul PDF (camindo/module-pdf) ergänzt die Befehle (CMS:PDF_…), mit
denen Templates PDF-Dokumente erzeugen – Seite für Seite, auf Wunsch auf einer
PDF-Vorlage wie einem Briefbogen, mit Texten, HTML, Bildern, Linien und Tabellen:
(CMS:PDF_INIT margins=25,20,30,20)
(CMS:PDF_PAGE briefbogen.pdf)
(CMS:PDF_FONT helvetica style=B size=16)
(CMS:PDF_TEXT "Rechnung {$cms['nummer']}" y=50)
(CMS:PDF_PRINT rechnung.pdf)
Die vollständige Befehlsliste enthält die Dokumentation des Moduls.
Stand: camindo CMS 9.1.3