Funktionen

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


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.000000

Um 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,00

Soll 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 soll

    • Die 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:11




dateGreaterThan

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.

 

Signatur
dateGreaterThan(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.

 

Signatur
floor(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, wenn object den Wert null hat.


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

null




join

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.

Signatur
keys(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