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

  1. 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
  2. Template-Sätze – Funktionen kapseln, portabel halten, weitergeben und anpassen
  3. 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
  4. 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