Funktionen
Globale Template-Funktionen stehen in allen Templates zur Verfügung. Sie werden verwendet, um Werte zu verarbeiten, zu formatieren oder zu prüfen (z. B. Strings anpassen, Zahlen runden, Listen zusammenführen oder Datumswerte vergleichen).
Diese Seite beschreibt ausschließlich globale Funktionen. Funktionen, die an ein Modul gebunden sind (z. B. Methoden von $wsAccount oder $wsExternalData), werden in der jeweiligen Modul-Referenz dokumentiert.
Viele Funktionen können alternativ auch als Modifier (Filter) verwendet werden.
Inhaltsverzeichnis
- 1 Grundlagen
- 2 List der Funktionen
- 2.1 abs
- 2.2 ceil
- 2.3 currency
- 2.4 dateFmt
- 2.5 dateGreaterThan
- 2.6 dateLessThan
- 2.7 floor
- 2.8 ifnull
- 2.9 int
- 2.10 join
- 2.11 json
- 2.12 keys
- 2.13 last
- 2.14 len
- 2.15 lower
- 2.16 max
- 2.17 merge
- 2.18 min
- 2.19 preparedFormat
- 2.20 random
- 2.21 range
- 2.22 raw
- 2.23 replace
- 2.24 reverse
- 2.25 round
- 2.26 sort
- 2.27 split
- 2.28 startswith
- 2.29 static
- 2.30 str
- 2.31 striphtml
- 2.32 take
- 2.33 takelast
- 2.34 trim
- 2.35 type
- 2.36 upper
- 3 Modifier
Grundlagen
Funktionen werden mit runden Klammern aufgerufen. Parameter werden kommasepariert übergeben. Funktionsnamen sind case-sensitive.
Schreibweise
Damit das Ergebnis einer Funktion im Template ausgegeben wird, wird die Ausgabe-Schreibweise verwendet:
{{= <Funktionsname>(...) }}
Das Ergebnis der Funktion muss nicht zwingend sofort im Template ausgegeben werden, sondern kann auch in einer eigenen Variable gespeichert werden, um es später weiter zu verwenden.
{{ var $myVariable = <Funktionsname>(...) }}
Parameterübergabe und Reihenfolge
Standardmäßig werden Parameter positionsbasiert übergeben (in der Reihenfolge der Signatur).
Wenn die Reihenfolge der Parameter geändert werden soll, müssen benannte Parameter verwendet werden (Name laut Signatur + =). Entscheidend sind dann die Parameternamen – nicht die Position.
Beispiel
Ein Gutschein soll über die Funktion replace umbenannt werden. Aus GUTSCHEIN_buy10 soll GUTSCHEIN_sale10 werden.
Die Signatur lautet: replace(content, search, replace). Bei positionsbasierter Übergabe ist die Reihenfolge daher:
{{= replace("GUTSCHEIN_buy10", buy", "sale") }}Sobald Parameter benannt übergeben werden (name="..."), ist die Reihenfolge frei:
{{= replace(search="buy", replace="sale", content="GUTSCHEIN_buy10") }}= In beiden Fällen ist das Ergebnis
GUTSCHEIN_sale10
Funktionen kombinieren (verkettete Verarbeitung)
Mehrere Funktionen können auch nacheinander angewendet werden, indem die erste Funktion als Argument der zweiten Funktion verwendet wird.
Beispiel
Die VersandkostenID „versand_kostenfrei“ soll sprechend in „VERSAND KOSTENFREI“ umbenannt und die Schreibweise in Versalien (Großschreibung) geändert werden.
Es werden die Funtkionen upper und replace verwendet:
{{= upper(replace("versand_kostenfrei", "_", " ")) }}=
VERSAND KOSTENFREI
List der Funktionen
abs
Die Funktion abs gibt den Absolutwert einer Zahl zurück – also den Wert ohne Vorzeichen. Eine negative Zahl wird dadurch positiv, eine positive Zahl bleibt unverändert.
Anwendungsbeispiel
Nützlich, um z. B. Rabattbeträge oder Preisdifferenzen im Shop immer als positive Zahl darzustellen – unabhängig davon, ob der Wert in den Daten ein Minus-Vorzeichen hat.
Signatur abs(value)
Parameter
value- Die Zahl, deren Absolutwert ermittelt werden soll.
Verwendbar als Modifier
ja
Beispiel mit negativem Wert
{{= abs(-7.5) }}Ausgabe
7.5
Beispiel mit positivem Wert
{{= abs(3) }}Ausgabe
3
ceil
Die Funktion ceil rundet eine Zahl immer auf die nächste ganze Zahl auf – egal, wie klein der Nachkommaanteil ist. ceil(1.1) ergibt also 2, genauso wie ceil(1.9).
Anwendungsbeispiel
Hilfreich, wenn Werte im Shop immer „zugunsten" einer ganzen Einheit aufgerundet werden sollen – z. B. Stückzahlen, Verpackungseinheiten oder berechnete Mengen.
Signatur ceil(value)
Parameter
value– Die Zahl, die aufgerundet werden soll.
Verwendbar als Modifier:
ja
Beispiel mit Dezimalzahl resp. Dezimalbruch
{{= ceil(1.3) }}Ausgabe (aufgerundet auf die nächste ganze Zahl)
2.000000
Beispiel mit ganzer Zahl (Ganzzahl)
{{= ceil(2) }}Ausgabe (ganze Zahl bleibt unverändert)
2.000000Um die Darstellung der Nachkommastellen anzupassen benutzen Sie ceil(2) | preparedFormat(“name“)
Gegenstück
floor
currency
Die Funktion currency formatiert einen numerischen Wert als Preisangabe gemäß den Shop-Einstellungen zur Währung. Dazu gehören insbesondere:
Dezimaltrennzeichen (z. B.
,statt.)Anzahl der Nachkommastellen (z. B. 2 bei vielen Währungen)
kaufmännisches Runden auf die konfigurierte Nachkommastellen-Anzahl
Die Funktion berechnet keine Preise (z.B. Steuern, Rabatte oder Versandkosten), sondern formatiert ausschließlich den übergebenen Wert für die Ausgabe.
Anwendungsbeispiel
Eignet sich für die Ausgabe von Beträgen wie Einzelpreisen, Rabatten, Zwischensummen und Gesamtsummen.
Signatur currency(price)
Parameter
price- Die Zahl, die als Preis formatiert werden soll.
Verwendbar als Modifier
ja
Beispiel mit Dezimalzahl resp. Dezimalbruch
{{= currency(3.1475) }}Ausgabe (kaufmännisch gerundet auf 2 Nachkommastellen)
3,15
Beispiel mit Ganzzahl
{{= currency(12) }}Ausgabe
12,00Soll der Wert unabhängig von der Währung in einem bestimmten Zahlenformat ausgegeben werden (z. B. andere Nachkommastellen-Anzahl), ist preparedFormat() die passendere Funktion.
→ https://websale.atlassian.net/wiki/spaces/WSDOKU/pages/2866741512/Funktionen#preparedFormat
dateFmt
Die Funktion dateFmt bringt ein Datum oder einen Zeitpunkt in ein gewünschtes Anzeigeformat. Der Eingabewert muss im ISO-8601-Format vorliegen (z. B. 2018-03-11T11:20:11.000Z) – dieses Format wird von den meisten Systemen automatisch verwendet.
Anwendungsbeispiel
Damit lassen sich z. B. Bestelldaten, Liefertermine oder Aktionszeiträume im Shop leserlich darstellen (z. B. als „11.03.2018" oder „11:20:11").
Signatur dateFmt(isoDate, fmt)
Parameter
isoDate– Datum/Zeit im ISO-8601-Format (z. B.2018-03-11T11:20:11.000Z)fmt– Formatangabe, die festlegt, wie die Ausgabe aussehen sollDie wichtigsten Platzhalter im Überblick
%d= Tag (01–31)%m= Monat (01–12)%Y= Jahr (4-stellig)%H= Stunde (00–23)%M= Minute (00–59)%S= Sekunde (00–60)
Damit können Sie die folgenden Formate einfach „zusammenbauen“, z. B.:
"%d.%m.%Y"→11.03.2018"%H:%M:%S"→11:20:11
Verwendbar als Modifier
ja
Beispiel zur Ausgabe des Bestelldatums aus der “Bestellzeit”
{{= dateFmt("2018-03-11T11:20:11.000Z", "%d.%m.%Y") }}Ausgabe
11.03.2018
Beispiel zur Ausgabe der Uhrzeit aus der “Bestellzeit”
{{= dateFmt("2018-03-11T11:20:11.000Z", "%H:%M:%OS") }}Ausgabe
11:20:11dateGreaterThan
Die Funktion dateGreaterThan vergleicht zwei Datumswerte (als Strings) miteinander und liefert true, wenn das erste Datum nach dem zweiten Datum liegt.
Anwendungsbeispiel
Damit lässt sich im Template z. B. prüfen, ob ein Liefertermin in der Zukunft liegt oder ob ein Zeitraum bereits überschritten ist.
SignaturdateGreaterThan(firstDate, secondDate)
Parameter:
firstDate– Erstes Datum (zu prüfender Wert)secondDate– Zweites Datum (Vergleichswert)
Verwendbar als Modifier
ja
Beispiel eines Datumsvergleichs
{{= dateGreaterThan("2019-03-11T11:20:11.000Z", "2017-07-11T11:20:11.000Z") }}Ausgabe
true
Gegenstück
dateLessThan
dateLessThan
Die Funktion dateLessThan vergleicht zwei Datumswerte (als Strings) miteinander und liefert true, wenn das erste Datum vor dem zweiten Datum liegt.
Anwendungsbeispiel
Damit lassen sich im Template z. B. Fristen oder Zeiträume prüfen - etwa ob ein Datum bereits überschritten ist oder ob ein Ereignis noch bevorsteht.
Signatur dateLessThan(firstDate, secondDate)
Parameter
firstDate– Erstes Datum (zu prüfender Wert)secondDate– Zweites Datum (Vergleichswert)
Verwendbar als Modifier
ja
Beispiel eines Datumsvergleichs
{{= dateLessThan("2020-03-11T11:20:11.000Z", "2021-07-11T11:20:11.000Z") }}Ausgabe
true
Gegenstück
dateGreaterThan
floor
Die Funktion floor rundet eine Zahl immer auf die nächste ganze Zahl ab – egal, wie groß der Nachkommaanteil ist. floor(4.9) ergibt also 4, genauso wie floor(4.1).
Anwendungsbeispiel
Hilfreich, wenn Werte im Shop grundsätzlich abgerundet werden sollen – z. B. bei berechneten Mengen oder Zwischenergebnissen, die nur als ganze Zahl weiterverarbeitet werden dürfen.
Signaturfloor(value)
Parameter
value– Numerischer Wert, der abgerundet werden soll.
Verwendbar als Modifier
ja
Beispiel mit Dezimalzahl resp. Dezimalbruch
{{= ceil(4.9) }}Ausgabe
4.000000
Beispiel mit ganzer Zahl
{{= ceil(2) }}Ausgabe
2.000000
Gegenstück
ceil
ifnull
Die Funktion ifnull prüft, ob ein Wert vorhanden ist oder nicht (null bedeutet: „kein Wert vorhanden"). Ist der Wert null, wird stattdessen ein Ersatzwert ausgegeben. Ist ein Wert vorhanden, wird dieser selbst verwendet.
Anwendungsbeispiel
Eignet sich z.B. für Fallback-Logiken im Shop - etwa um ein Ersatzbild anzuzeigen, wenn kein Produktbild vorhanden ist, oder um fehlende Produktdaten durch Standardwerte zu ersetzen.
Signatur ifnull(object, value)
Parameter
object- Der zu prüfende Wert.value- Der Alternativwert, der ausgegeben wird, wennobjectden Wertnullhat.
Verwendbar als Modifier
ja
Beispiel mit null-Wert
{{= ifnull(Null, "sale") }}
Ausgabe
sale
Beispiel mit vorhandenem Wert
{{= ifnull("web", "sale") }}
Ausgabe (der String “web” ist nicht null, daher wird er selbst ausgegeben.
web
Beispiel mit Produktbild-Fallback
In der Variable $myProduct werden alle Informationen und Daten zu einem Produkt gespeichert. Wenn kein Produktbild gefunden wird ($myProduct.custom.image.normal ist null), dann wird das Ersatzbild noImageNormal.png angezeigt.
{{ var $myProduct = $wsView.info.product }}
<img src="{{= ifnull($myProduct.custom.image.normal, static("images/noImageNormal.png")) }}">int
Die Funktion int wandelt einen Wert in eine ganze Zahl (Integer) um. Ist die Umwandlung nicht möglich, wird null zurückgegeben.
Anwendungsbeispiel
Nützlich, um z. B. Mengenangaben oder IDs, die als Text vorliegen (etwa aus URL-Parametern), in eine Zahl umzuwandeln, bevor sie weiterverarbeitet werden.
Signatur int(value)
Parameter
value- Der Wert, der in eine Ganzzahl konvertiert werden soll.
Verwendbar als Modifier
ja
Beispiel mit konvertierbarem Wert
{{= int("10") }}Ausgabe
10
Beispiel mit nicht konvertierbarem Wert
{{= int("websale") }}Ausgabe
nulljoin
Die Funktion join fügt alle Einträge einer Auflistung zu einem String zusammen. Optional kann ein Separator (Trennzeichen) angegeben werden, der die Elemente voneinander trennt.
Anwendungsbeispiel
Eignet sich z. B. um Produkteigenschaften, Variantenmerkmale oder Kategorien als zusammenhängenden Text auszugeben – etwa kommasepariert in einer Zeile.
Signatur join(list[, "separator"])
Parameter
list- Die Auflistung, deren Einträge zusammengefügt werden sollen.separator(optional) - Trennzeichen zwischen den Einträgen. Standard: kein Trennzeichen.
Verwendbar als Modifier
ja
Beispiel ohne Separator
{{= join([1, 2, 3]) }}Ausgabe
123
Beispiel mit Separator
{{= join([1, 2, 3], "-") }}Ausgabe
1-2-3
Gegenstück
split
json
Die Funktion json gibt ein Datenobjekt in der technischen JSON-Schreibweise aus – einem standardisierten Textformat, das sich leicht maschinell verarbeiten lässt.
Anwendungsbeispiel
Nützlich zum Fehlersuchen (Debugging) im Template oder bei der Weitergabe von Daten an externe Dienste (z. B. Tracking, Analytics).
Signatur json(object)
Parameter
object- Das Objekt, das als JSON-String ausgegeben werden soll.
Verwendbar als Modifier
ja
Beispiel mit einer Map
{{ var $myMap = {'Key': 'Value', 'list': [1, 2, 3]} }}
{{= json($myMap) }}Ausgabe
{"Key":"Value","list":[1,2,3]}
Beispiel mit einem Modul
{{ var $deepObject = {'1':{'2':{'3':{'4':{'5':{'6':{'7':'end'}}}}}}} }}
{{= json($deepObject) }}Ausgabe
{"1":{"2":{"3":{"4":{"5":"..."}}}}}Es werden nicht mehr als fünf Ebenen ausgegeben. Tiefere Ebenen werden als “…” dargestellt.
keys
Die Funktion keys gibt alle Bezeichner (Schlüssel) eines Datenobjekts (Map) als Auflistung zurück. Eine Map besteht aus Paaren von Bezeichnern und Werten – z. B. {name: "Topseller", price: 12.99}. Mit keys lassen sich gezielt die Bezeichner auslesen.
Anwendungsbeispiel
Nützlich, um z. B. über alle Einträge eines Datenobjekts zu gehen und sowohl die Bezeichner als auch die zugehörigen Werte im Template anzuzeigen – etwa bei dynamisch aufgebauten Produktdaten oder Konfigurationseinstellungen.
Signaturkeys(object)
Parameter
object- Das Datenobjekt, dessen Bezeichner (Schlüssel) zurückgegeben werden sollen.
Verwendbar als Modifier
ja
Beispiel
{{= keys({name: "Topseller", price: 12.99, description: "Beschreibung"}) }}Ausgabe
["description","price","name"]
last
Gibt das letzte Element einer List zurück.
Signatur: last(list)
{{= last(["a", "b", "c", "d"]) }}
<!-- Ausgabe: d -->
len
Gibt die Länge eines Strings, einer List oder einer Map zurück.
Signatur: len(sequence)
{{= len("abc def. XYZ") }}
<!-- Anzahl der Zeichen. Ausgabe: 12 -->
{{= len([1, 2, 3]) }}
<!-- Anzahl der List-Elemente. Ausgabe: 3 -->
{{= len({name: "Produkt", price: 12.99}) }}
<!-- Anzahl der Schlüssel-Wert-Paare. Ausgabe: 2 -->
lower
Liefert eine Kopie eines Strings, in der alle Buchstaben in Kleinbuchstaben umgewandelt wurden.
Signatur: lower(content)
{{= lower("TOPSELLER") }}
<!-- Ausgabe: topseller -->
Gegenstück: upper
max
Gibt den höchsten Wert einer List (bestehend aus Zahlen) aus.
Signatur: max(list)
{{= max([5,13,-1,3,2,-7,12]) }}
<!-- Ausgabe: 13 -->
Gegenstück: min
merge
Vereint zwei Maps. Es wird kein neues Objekt angelegt, sondern die vereinten Maps werden im ersten Parameter target gespeichert.
Signatur: merge(target, source)
Die Variable $a enthält nun die Map mit beiden Schlüssel-Wert-Paaren.
{{ var $a = {"a": 1} }}
{{ var $b = {"b": 2} }}
{{= merge($a, $b) }}
<!-- Ausgabe: {"b": 2, "a": 1} -->
Bei Maps mit identischen Schlüsseln wird der Wert des ersten Parameters überschrieben.
{{ var $c = {"c": 3} }}
{{ var $x = {"c": 4} }}
{{= merge($c, $x) }}
<!-- Ausgabe: {"c": 4} -->
min
Gibt den niedrigsten Wert einer List (bestehend aus Zahlen) aus.
Signatur: min(list)
{{= min([5,13,-1,3,2,-7,12]) }}
<!-- Ausgabe: -7 -->Gegenstück: max
preparedFormat
Formatiert eine Zahl bezüglich Dezimaltrenner und Anzahl der Nachkommastellen gemäß der Konfiguration des Shops.
Signatur: preparedFormat(number, formatName)
amount formatiert hier auf ganze Zahlen.
{{= preparedFormat(3.5, "amount") }}
<!-- Ausgabe: 4 -->
random
Geplant. Momentan noch nicht unterstützt.
range
Liefert eine Liste von ganzen Zahlen. Sie beginnt mit dem ersten Parameter start und endet mit dem Erreichen des zweiten Parameters stop. Standardmäßig erfolgt die schrittweise Erhöhung (increment) um 1. Bei absteigenden Zahlenreihen muss ein negatives increment angegeben werden.
© 2025 WEBSALE AG | Impressum | Datenschutz