Templatesprache
Die Fuman-Templatesprache ist eine Eigenentwicklung.
Variablen
Variabeln können folgendermassen geholt werden.
{variable} {objekt.key} {objekt.key.key} {objekt}[ {key} ] {objekt}[ {key.key} ] {array}[ {*} ]
Vordefinierte Funktionen
Es stehen diverse Funktionen zur Verfügung welche aufgerufen werden können. Die genauen Parameter & Funktionen finden sich in der API.
Inhalte als HTML-Attribut vorbereiten (Ohne Sonderzeichen usw.): {attr:key} Komponent instanzieren und argumente mitgeben: {component:app_ihrappname_component_ihrkomponent} {component:app_ihrappname_component_ihrkomponent:'hallo welt'} {component:app_ihrappname_component_ihrkomponent:'hallo welt':variable} Ein Wert aus der Konfiguration(config.php) auslesen: {config:section.key} Ein Datum formatieren: {date:variable:format} Eine Variabel dumpen ala var_dump: {dump:variable} Array Inhalte Filter mit first, last, usw. {filter:variable:expression} z.B: {filter:variable:'first'} Eine Globale Variable ausgeben: {global:variable} z.B. {global:frontendRoot} Ein Datum international bzw. Sprachabhängig formatieren: {i18ndate:variable:format} IF-Logik um Parameter gegen null oder andere inhalte zu prüfen: {if:variable}[ hallo {variable}] {if:!variable}[variable not set] {if:variable:variable2}[text is {variable}{variable2}] if:x:operand:y} {if:_position:>=:_super.limit}[{_position} > = {_super.limit}]
Inner Template
Inner-Templates sind Template-Blocks, sie definieren einen Template-Abschnitt.
Wird z.B. etwas aufgelistet, wird häufig ein Inner-Template verwendet, es beschreibt wie der Listeninhalt dargestellt werden soll.
Ein Inner-Template wird durch Eckige Klammern umschlossen. Weiter kann ein Inner-Temlate nur direkt nach einem Ausdruck definiert werden.
<ul> {listeMitObjekten}[ <li> //zugriff auf den Wert title des Objektes in der Liste {key} </li> ] <ul>
Arrays
Objekte welche sich in Arrays befinden, erhalten zusätzlich folgende Parameter:
{arrayMitObjekten}[ Parent-Objekt/Array: {_super} Aktuelle Position (Beginnt bei 1){_position} Länge des Arrays: {_total} Boolean ob erstes Objekt: {_first} Boolean ob letztes Objekt: {_last} Boolean ob gerade Position: {_even} ]
Pipes
Angelehnt an die Unix CLI (command line interface) Pipe Funktion ist die Template Sprache mit einer Möglichkeit erweitert, Daten direkt im Template vor der Ausgabe mit nacheinander ausgeführten Funktionen zu bearbeiten/aufzubereiten.
Das Sprachkonstrukt ist wie beim Unix-CLI der senkrechte Strich (Verkettungszeichen, Pipe) und mit _self wird auf den übergebenen Wert zugegriffen.
//Zeichenfolge von app_core_xxx lesen und danach verkleinern {translation:app_core_xxx|call:php:strtolower:_self} //Zeichenfolge von app_core_xxx lesen, verkleinern und danach einem neu Instanziierten Komponenten übergeben {translation:app_core_xxx|call:php:strtolower:_self|component:app_xxx_xxx_xxx:_self} //URI-Zeichenfolge aus einer Übersetzung lesen und danach zu einem Weblink umwandeln (aus bspw. fuman://-99.html wird https://your-domain-name.ch/-99.html) {translation:app_appname_foo_bar_uri|call:Fuman_Util_Web:prepareUri:_self}
Snippet
Mit dem «snippet» befehl, können phtml Templates in einem phtml Template aufgerufen werden ohne das ein Komponent definiert werden muss.
Dabei kann entweder direkt ein Pfad zu einer Datei angegeben werden oder man Greift über einen Key/Namen auf ein vordefiniertes Template zurück.
//Pfad ab admin (Root) Ordner {snippet:app/core/action/add/assets/add.phtml:*} //relativer Pfad zum höhere/vorderen ResponseData bei welchem ein Pfad zu einem Template definiert ist. {snippet:./snippet_xyz.phtml:*} //Interpolierten Pfad (type ist die Variable) {snippet:./snippet_{type}.phtml:*}