Ausgabefilter
Ausgabefilter stellen eine Methode dar, um den Text zu verändern, den ein
Platzhalter ausgibt. Dieser Weg ist oft einfacher als der Einsatz von
vtCalc oder vtEcho. Die Schreibweise
sieht so aus, dass vor der schließenden Klammer des Platzhalters ein Pipesymbol
(|
) und der Name des gewünschten Filters eingefügt wird, zum Beispiel:
{{Headline|strtoupper}}
Hiermit würden alle Buchstaben, die der Platzhalter Headline
ausgibt, in
Großbuchstaben umgewandelt.
Die Standard-Ausgabefilter (siehe unten) erwarten eine zusätzliche Angabe, die durch einen Doppelpunkt vom Filternamen abgetrennt wird, zum Beispiel:
{{Preis|num-en:2.,}}
Hiermit würde eine Preisangabe mit zwei Nachkommastellen, einem Punkt als Tausendertrennzeichen und einem Komma als Dezimaltrennzeichen ausgegeben.
Standard-Ausgabefilter
Folgende Ausgabefilter sind fest in Virthos eingebaut.
- num
Interpretiert den Text als Zahl in deutscher Schreibweise (mit Komma als Dezimaltrennzeichen) und bringt diese in ein bestimmtes Format. Das Format wird als Zusatzangabe mit bis zu drei Zeichen angegeben:
Position Bedeutung 1 Anzahl der Nachkommastellen (Vorgabe: 0) 2 Tausendertrennzeichen (Vorgabe: Punkt) 3 Dezimaltrennzeichen (Vorgabe: Komma) Wenn die Formatangabe fehlt, liefert
num
eine Zahl ohne Nachkommastellen mit einem Punkt als Tausendertrennzeichen. Wenn Sie nur zwei Zeichen angeben, wird das zweite Zeichen als Dezimaltrennzeichen verwendet, und die Zahl wird ohne Tausendertrennzeichen ausgegeben.- num-en
Interpretiert den Text als Zahl in angelsäschischer Schreibweise (mit Punkt als Dezimaltrennzeichen) und bringt diese in ein bestimmtes Format. Das Format wird als Zusatzangabe mit bis zu drei Zeichen angegeben (siehe
num
).- date
Interpretiert den Text als Zeitangabe und bringt diese in ein bestimmtes Format. Bei der Zeitangabe kann es sich um einen Unix-Zeitstempel (Zahl der Sekunden seit dem 01.01.1970) handeln, um ein Datum in deutscher oder internationaler Schreibweise oder um eine relative Angabe in englischer Sprache wie "tomorrow" oder "+14 days". Welche Angaben im Einzelnen möglich sind, kann der Dokumentation der PHP-Funktion
strtotime
entnommen werden.Das Format wird in der Schreibweise angegeben, wie sie von der PHP-Funktion
date
erwartet wird. Zum Beispiel:{{Datum | date:YYYY-mm-dd }}
Von Version 3.8.7 bis 4.1.2 erlaubte Virthos auch Formatangaben in der Schreibweise der PHP-Funktion
strftime
, womit insbesondere deutsche Wochentags- und Monatsnamen möglich waren. Diese Funktion ist seit PHP 8.1 als veraltet markiert, deshalb verwendet Virthos seit Version 4.2.0 die IntlDateFormatter-Klasse für denselben Zweck. Die verwendbaren Codes sind hier dokumentiert. Um deutlich zu machen, dass lokalisierte Namen ausgegeben werden sollen, muss das erste Zeichen des Formatcodes ein Prozentzeichen sein. Dieses wird nicht mit ausgegeben.Wenn der Virthos-Konfigurationsparameter
systemLanguage
auf "de" eingestellt ist, werden Wochentags- und Monatsnamen in deutscher Sprache ausgegeben, ansonsten in englischer. Um hiervon abzuweichen, können Sie mittelsvtCalc
und der PHP-Funktionsetlocale
explizit eine Sprache festlegen.- list
Interpretiert den Text als Wert einer vorgegebenen Werteliste und gibt den zugehörigen Beschreibungstext aus. Die Werteliste muss zuvor mittels vtSet als Objektliste in einer Variablen gespeichert werden, wobei jedes Objekt ein
value
- und eintext
-Attribut erhalten muss. Der Name der Variablen wird dann im Ausgabefilter als Zusatzangabe notiert, zum Beispiel:<!--{{vtSet: Wochentage = '[ { "value": "1", "text": "Montag" }, { "value": "2", "text": "Dienstag" }, { "value": "3", "text": "Mittwoch" }, { "value": "4", "text": "Donnerstag" }, { "value": "5", "text": "Freitag" } ]' }}--> <p>eingeplant für: {{Wochentag | list:Wochentage }}</p>
- calc (ab v3.8.7)
Interpretiert den Platzhalter als Zahl und verändert diese durch Addition, Subtraktion, Multiplikation oder Division. Dazu muss einer der Operatoren
+
,-
,*
oder/
sowie ein Zahlenwert als Filterzusatz angegeben wird. Dercalc
-Filter wird automatisch angewendet, wenn die Filterangabe mit einem der vier Operatoren beginnt, darum kann der Name auch weggelassen werden.- ceil, floor, round (ab v3.8.7)
Diese drei Filter arbeiten genauso wie
calc
, nur mit dem Unterschied, dass sie das berechnete Ergebnis auf die nächst höhere (ceil
) oder niedrigere (floor
) Ganzzahl bzw. nach kaufmännischer Regel (round
) runden.- mod (ab v3.8.7)
Interpretiert den Platzhalter als numerischen Wert und gibt den Rest aus, der verbleibt, wenn man diesen durch die als Filterzusatz übergebene Zahl dividiert.
- %...
Wenn der Filter mit einem Prozentzeichen beginnt, wird die PHP-Funktion
sprintf
als Filter verwendet. Die Funktion bekommt als ersten Parameter (Formatierungs-String) die Filter-Zeichenkette übergeben, als zweiten den Platzhaltertext.<p>{{vtGet:Anzahl|%'.06d}}</p> <!-- gibt Anzahl sechstellig aus, ggf. mit vorangestellten Nullen -->
PHP-Funktionen als Ausgabefilter
Neben den Standard-Ausgabefiltern können Sie jede PHP-Funktion, die mit einem einzelnen Argument aufgerufen werden kann, als Filter verwenden. Die folgende Tabelle listet einige gebräuchliche PHP-Funktionen auf, die sich als Filter eignen:
Name | Funktion |
---|---|
htmlentities |
wandelt alle geeigneten Zeichen in entsprechende HTML-Codes um |
htmlspecialchars |
wandelt Sonderzeichen in HTML-Codes um |
strlen |
gibt die Anzahl der Zeichen aus |
strtolower |
wandelt alle Buchstaben in Kleinbuchstaben um |
strtoupper |
wandelt alle Buchstaben in Großbuchstaben um |
urldecode |
ersetzt spezielle Zeichenfolgen, die in URLs vorkommen können, durch die ursprünglichen Sonderzeichen |
urlencode |
ersetzt Sonderzeichen, die in URLs nicht erlaubt sind, durch spezielle Zeichenfolgen |
utf8_decode |
konvertiert den Text von UTF8 nach ISO 8859-1 (Latin 1) |
utf8_encode |
konvertiert den Text von ISO 8859-1 (Latin 1) nach UTF8 |
Weitere Einzelheiten finden Sie in der PHP-Dokumentation.
Eigene Funktionen als Ausgabefilter
Sie können auch eigenen PHP-Funktionen schreiben und als Ausgabefilter verwenden. Eine solche Funktion bekommt als erstes Argument den Text übergeben, den der betreffende Platzhalter ausgibt, und als zweiten die zusätzlichen Parameter, die hinter dem Doppelpunkt notiert sind (oder eine leere Zeichenkette, falls es keine Parameter gibt). Die Funktion muss dann den Text zurückliefern, der an Stelle des eigentlichen Platzhaltertextes ausgegeben werden soll.
Das folgende Beispiel zeigt eine PHP-Funktion, die einen einfachen Filter definiert:
function first_chars( $text, $count )
{
$count = empty( $count ) ? : 1 : (int) $count;
return substr( $text, 0, $count );
}
Diese Funktion liefert die ersten Zeichen des übergebenen Textes zurück. Die Verwendung als Ausgabefilter könnte dann so aussehen:
<p>Kürzel: {{Vorname|first_chars:2}}{{Nachname|first_chars:2}}</p>
Damit Virthos einen selbst definierten Ausgabefilter nutzen kann, muss die
PHP-Datei, in der die betreffende Funktion definiert ist, mittels
vtLoad ins Template eingebunden werden. Alternativ können
Sie die Datei auch mit Hilfe des Konfigurationsparameters includeFile
einbinden.
Unterstützung
Die folgende Liste zeigt, in welchen VirthosTalk-Platzhaltern Ausgabefilter verwendet werden können: