> ## Documentation Index
> Fetch the complete documentation index at: https://dokumentation.websale.de/llms.txt
> Use this file to discover all available pages before exploring further.

# Operatoren

> Operatoren der Template-Sprache: Zugriff, Mathematik, Vergleich, Logik und der in-Operator zum Arbeiten mit Werten, Listen und Maps.

Operatoren werden in der Template-Sprache verwendet, um auf Werte zuzugreifen, Werte zu berechnen, Inhalte zu vergleichen oder Bedingungen zu verknüpfen. Sie sind ein grundlegender Bestandteil vieler Template-Ausdrücke, zum Beispiel bei Ausgaben, Bedingungen oder beim Arbeiten mit Listen und Maps.

Im Unterschied zu Funktionen werden Operatoren nicht als Aufruf mit Klammern geschrieben, sondern direkt innerhalb eines Ausdrucks verwendet. Die vorhandene Operatoren-Referenz behandelt dazu insbesondere Zugriffs-, mathematische, Vergleichs-, logische sowie den Containment-Operator `in`.

***

## Grundlagen

### **Schreibweise**

Operatoren werden direkt innerhalb eines Ausdrucks verwendet. Sie können sowohl in einer Ausgabe als auch in einer Variablenzuweisung oder in einer Bedingung vorkommen.

Damit das Ergebnis eines Ausdrucks direkt im Template ausgegeben wird, wird die Ausgabe-Schreibweise verwendet:

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= <Ausdruck> }}
```

Ein Ausdruck kann auch zunächst einer eigenen Variablen zugewiesen werden, um ihn später weiterzuverwenden:

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{ var $myVariable = <Ausdruck> }}
```

Die vorhandenen Referenzseiten zeigen genau dieses Muster bereits für Funktionsaufrufe, Variablen und Operator-Ausdrücke.

 

### Operatoren in Ausgaben und Bedingungen

Operatoren werden besonders häufig in diesen Situationen verwendet:

* beim Zugriff auf Werte in Maps oder Listen
* bei Berechnungen
* bei Vergleichen in `if`-Bedingungen
* beim Verknüpfen mehrerer Bedingungen
* beim Prüfen, ob ein Wert in einer Liste oder Map enthalten ist

**Beispiele:**

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= $myProduct.name }}
{{= $myPrice * $quantity }}
{{= $myProductStock > 0 }}
{{= $myPrice > 10 and $myProductStock > 0 }}
{{= "red" in $myAvailableColors }}
```

Die Operatoren-Seite dokumentiert dafür bereits `.` und `[]` für Zugriffe, mathematische Operatoren, Vergleichsoperatoren, logische Operatoren sowie `in`.

 

 

### Reihenfolge und Klammern

Sobald mehrere Operatoren in einem Ausdruck kombiniert werden, sollte mit Klammern gearbeitet werden, um die gewünschte Reihenfolge eindeutig zu machen. Das erhöht nicht nur die Lesbarkeit, sondern verhindert auch Missverständnisse bei komplexeren Bedingungen.

Beispiel:

`{{= ($myPrice > 0 and $stock > 0) or $myIsBackorderAllowed }}`

Empfehlung:

* Einfache Ausdrücke können direkt geschrieben werden.
* Bei gemischten Vergleichen und logischen Verknüpfungen sollten Klammern verwendet werden.
* Besonders bei `and`, `or` und `not` ist eine klare Struktur wichtig.

 

***

 

## Liste der Operatoren

 

### Punkt-Operator `.`

Der Punkt-Operator wird verwendet, um auf ein Attribut einer Map zuzugreifen. Die bestehende Operatoren-Seite beschreibt den Punkt-Operator als Standardzugriff auf Attribute eines Objekts und zeigt zugleich, dass er bei Listenindizes nicht funktioniert.

Anwendungsbeispiel\
Typisch ist der Zugriff auf Produktdaten, Kundendaten oder andere strukturierte Werte.

Schreibweise

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= $myMap.key }}
```

Beispiel – Produktname ausgeben

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= $myProduct.name }}
```

Beispiel – Lieferland aus einer Bestelladresse ausgeben

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= $order.shippingAddress.country }}
```

Hinweis: Für numerische Listenindizes ist der Punkt-Operator nicht geeignet.

Beispiel – funktioniert nicht bei einer Liste

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{ var $myList = [4, 3, 2, 1] }}
{{= $myList.2 }}
```

Ausgabe

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
Keine Ausgabe
```

 

 

### Index-Operator `[]`

Der Index-Operator wird verwendet, um auf Werte in Listen oder Maps zuzugreifen. Bei Maps wird der Schlüssel in eckigen Klammern angegeben. Bei Listen wird der numerische Index verwendet. Laut bestehender Doku kann im Index-Operator auch eine Variable verwendet werden.

Anwendungsbeispiel\
Sinnvoll bei dynamischen Schlüsseln oder beim Zugriff auf ein bestimmtes Listenelement.

Schreibweise

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= $myObject["key"] }}
{{= $myList[0] }}
```

Beispiel – auf ein Feld in einer Map zugreifen

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= $myProduct["price"] }}
```

Beispiel – erstes Element einer Liste ausgeben

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{ var $myList = [4, 3, 2, 1] }}
{{= $myList[0] }}
```

Ausgabe

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
4
```

Beispiel – dynamischen Schlüssel verwenden

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{ var $fieldName = "price" }}
{{= $myProduct[$fieldName] }}
```

Hinweis: Listenindizes beginnen bei `0`.

 

### Additionsoperator `+`

Der Operator `+` wird verwendet, um numerische Werte zu addieren. Auf der aktuellen Funktionsseite wird zusätzlich dokumentiert, dass `+` auch zum Zusammenfügen von Strings sowie zum Vereinen von Listen verwendet werden kann. Das widerspricht der älteren Operatoren-Seite; dieser Entwurf folgt deshalb der neueren Funktionsseite.

**Anwendungsbeispiel**\
Verwendbar für Berechnungen, aber auch zum Zusammensetzen von Texten oder zum Zusammenführen von Listen.

Schreibweise

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= value1 + value2 }}
```

Beispiel – zwei Zahlen addieren

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= 10 + 1 }}
```

Ausgabe

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
11
```

Beispiel – Artikelnummer aus Präfix und ID zusammensetzen

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{ var $prefix = "ART-" }}
{{ var $productId = "10452" }}
{{= $prefix + $productId }}
```

Ausgabe

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
ART-10452
```

Beispiel – Zahl in einen Text einfügen

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{ var $quantity = 3 }}
{{= "Anzahl Artikel im Warenkorb: " + str($quantity) }}
```

Beispiel – zwei Listen zusammenführen

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{ var $listA = ["red", "green"] }}
{{ var $listB = ["blue"] }}
{{= $listA + $listB | json }}
```

Hinweis: Beim Zusammenfügen von Texten müssen nicht-string Werte gegebenenfalls zuerst mit `str()` in einen String umgewandelt werden.

 

### Subtraktionsoperator `-`

Der Operator `-` subtrahiert einen Wert von einem anderen Wert. Die Operatoren-Seite dokumentiert `-` als einen der mathematischen Grundoperatoren.

Anwendungsbeispiel\
Nützlich für Preisunterschiede, Rabatte oder Restmengen.

Schreibweise

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= value1 - value2 }}
```

Beispiel – Preisnachlass berechnen

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{ var $regularPrice = 99.95 }}
{{ var $salePrice = 79.95 }}
{{= $regularPrice - $salePrice }}
```

Ausgabe

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
20
```

Beispiel – Restbestand nach Abzug berechnen

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{ var $stock = 15 }}
{{ var $reserved = 4 }}
{{= $stock - $reserved }}
```

Ausgabe

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
11
```

 

 

### Multiplikationsoperator `*`

Der Operator `*` multipliziert zwei numerische Werte. Er ist Teil der auf der Operatoren-Seite dokumentierten mathematischen Operatoren.

Anwendungsbeispiel\
Typisch für Mengen- und Preisberechnungen.

Schreibweise

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= value1 * value2 }}
```

Beispiel – Zwischensumme berechnen

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{ var $unitPrice = 19.99 }}
{{ var $quantity = 3 }}
{{= $unitPrice * $quantity }}
```

Beispiel – Verpackungseinheiten berechnen

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{ var $boxes = 4 }}
{{ var $itemsPerBox = 6 }}
{{= $boxes * $itemsPerBox }}
```

Ausgabe

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
24
```

 

 

### Divisionsoperator `/`

Der Operator `/` dividiert einen numerischen Wert durch einen anderen numerischen Wert. Auch dieser Operator ist in der vorhandenen Mathe-Übersicht dokumentiert.

Anwendungsbeispiel\
Hilfreich bei Durchschnittswerten, Anteilen oder Umrechnungen.

Schreibweise

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= value1 / value2 }}
```

Beispiel – Durchschnittspreis berechnen

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{ var $sum = 90 }}
{{ var $count = 3 }}
{{= $sum / $count }}
```

Ausgabe

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
30
```

Beispiel – Teilmenge berechnen

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= 7.5 / 3 }}
```

Ausgabe

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
2.5
```

Hinweis\
Bei Divisionen sollte sichergestellt werden, dass der Divisor nicht `0` ist.

 

 

### Modulo-Operator `%`

Der Modulo-Operator `%` gibt den Rest einer Division zurück. Die Operatoren-Seite nennt `%` ausdrücklich als Modulo-Operator.

Anwendungsbeispiel\
Nützlich, um gerade und ungerade Werte zu prüfen oder Rasterlogik in Listen umzusetzen.

Schreibweise

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= value1 % value2 }}
```

Beispiel – prüfen, ob eine Zahl gerade ist

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= 8 % 2 == 0 }}
```

Ausgabe

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
true
```

Beispiel – jedes dritte Element in einer Liste markieren

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{ if $loop.index % 3 == 0 }}
  <div class="teaser-row-break"></div>
{{ /if }}
```

 

 

### Gleichheitsoperator `==`

Der Operator `==` prüft, ob zwei Werte gleich sind. Vergleichsoperatoren liefern laut bestehender Referenz immer einen booleschen Wert, also `true` oder `false`.

Anwendungsbeispiel\
Verwendbar für Statusabfragen, Länderprüfungen oder Template-Logik.

Schreibweise

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= value1 == value2 }}
```

Beispiel – Land prüfen

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= $countryCode == "DE" }}
```

Beispiel – Preis mit Maximalwert vergleichen

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{ var $maxPrice = 10.00 }}
{{ var $price = 10.00 }}
{{= $price == $maxPrice }}
```

Ausgabe

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
true
```

 

 

### Ungleichheitsoperator `!=`

Der Operator `!=` prüft, ob zwei Werte ungleich sind. Er gehört ebenfalls zu den auf der Operatoren-Seite dokumentierten Vergleichsoperatoren.

Anwendungsbeispiel\
Nützlich, wenn ein Wert ausdrücklich nicht einem bestimmten Zustand entsprechen darf.

Schreibweise

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= value1 != value2 }}
```

Beispiel – nur anzeigen, wenn ein Kunde nicht gesperrt ist

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= $customer.status != "blocked" }}
```

 

 

### Kleiner als `<`

Der Operator `<` prüft, ob der linke Wert kleiner als der rechte Wert ist. Vergleichsoperatoren sind laut aktueller Operatoren-Seite für solche Wertvergleiche vorgesehen.

Beispiel – Preislimit prüfen

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= $price < 50 }}
```

 

 

### Größer als `>`

Der Operator `>` prüft, ob der linke Wert größer als der rechte Wert ist.

Beispiel – Mindestbestellwert prüfen

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= $cartTotal > 100 }}
```

 

 

### Kleiner oder gleich `<=`

Der Operator `<=` prüft, ob ein Wert kleiner oder gleich einem anderen Wert ist.

Beispiel – Bestand prüfen

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= $score >= 80 }}
```

 

 

### Größer oder gleich `>=`

Der Operator `>=` prüft, ob ein Wert größer oder gleich einem anderen Wert ist.

Beispiel – Mindestalter oder Schwellenwert prüfen

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= $score >= 80 }}
```

 

 

### Logisches `and`

Der Operator `and` verknüpft zwei Bedingungen. Das Ergebnis ist nur dann `true`, wenn **beide** Bedingungen erfüllt sind. Genau dieses Verhalten ist auf der Operatoren-Seite mit Beispielen beschrieben.

Anwendungsbeispiel\
Sinnvoll, wenn mehrere Voraussetzungen gleichzeitig erfüllt sein müssen.

Schreibweise

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= condition1 and condition2 }}
```

Beispiel – Produkt nur anzeigen, wenn Preis gültig und Bestand vorhanden ist

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= $price > 0 and $inventory > 0 }}
```

Beispiel – Kaufbutton nur für aktive Produkte mit Bestand

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{ if $product.active and $product.stock > 0 }}
  <button>In den Warenkorb</button>
{{ /if }}
```

 

 

### Logisches `or`

Der Operator `or` verknüpft zwei Bedingungen. Das Ergebnis ist `true`, wenn **mindestens eine** der Bedingungen erfüllt ist. `or` gehört laut bestehender Referenz zu den logischen Operatoren.

Anwendungsbeispiel\
Geeignet für alternative Freigaben oder Sonderfälle.

Schreibweise

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= $inventory > 0 or $allowPreorder }}
```

Beispiel – Produkt anzeigen, wenn Bestand vorhanden oder Vorbestellung erlaubt ist

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= $inventory > 0 or $allowPreorder }}
```

 

 

### Logisches `not`

Der Operator `not` kehrt den Wahrheitswert eines Ausdrucks um. Auch `not` ist Teil der auf der Operatoren-Seite dokumentierten logischen Operatoren.

Anwendungsbeispiel\
Hilfreich, wenn geprüft werden soll, dass eine Bedingung **nicht** erfüllt ist.

Schreibweise

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= not condition }}
```

Beispiel – nur anzeigen, wenn der Benutzer nicht eingeloggt ist

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{ if not $isLoggedIn }}
  <a href="/login">Jetzt anmelden</a>
{{ /if }}
```

Beispiel – Meldung anzeigen, wenn kein Bestand vorhanden ist

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{ if not ($inventory > 0) }}
  <p>Aktuell nicht verfügbar</p>
{{ /if }}
```

 

 

### Containment-Operator `in`

Der Operator `in` prüft, ob der linke Wert im rechten Objekt enthalten ist. Die bestehende Operatoren-Seite dokumentiert `in` ausdrücklich als Containment-Operator und zeigt als Beispiel `1 in [1, 2, 3]`.

Anwendungsbeispiel\
Sinnvoll für Länderlisten, erlaubte Werte, Farbauswahlen oder Whitelists.

Schreibweise

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= value in collection }}
```

Beispiel – prüfen, ob eine Farbe verfügbar ist

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= "red" in ["red", "green", "blue"] }}
```

Ausgabe

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
true
```

Beispiel – Land gegen erlaubte Länderliste prüfen

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{ var $allowedCountries = ["DE", "AT", "CH"] }}
{{= $countryCode in $allowedCountries }}
```
