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

# $wsOptions - Template-Optionen

> Werte von Template-Optionen im Frontend auslesen – global oder pro Konfigurationsknoten.

Mit dem `$wsOptions`-Modul lesen Sie im Frontend die Werte von Template-Optionen aus. Template-Optionen sind Einstellungen, die einmal im Template definiert werden und danach im Admin-Interface pflegbar sind - ohne dass das Template erneut angepasst werden muss. Damit lassen sich Darstellungs-Details umschalten (z. B. ob das Icon einer Zahlungsart im Footer erscheint), ohne ins Template einzugreifen.

Auf dieser Seite geht es um das Lesen der Optionswerte. Wie Optionen definiert werden (Typen, Wertgrenzen, `attachTo`, Darstellung im Admin-Interface), beschreibt [Template-Optionen definieren](/frontend/referenz/optionen).

***

## Grundkonzept

Eine Template-Option durchläuft immer denselben Ablauf: definieren → im Admin pflegen → im Template lesen.

* **Definieren:** Die Option wird in einem Template mit der Anweisung `{{ option … }}` angelegt (siehe [Template-Optionen definieren](/frontend/referenz/optionen)).
* **Verfügbar werden:** Definierte Optionen erscheinen im Admin-Interface, nachdem die Templates erfolgreich kompiliert wurden. Wird eine Option wieder aus den Templates entfernt, verschwindet sie erst nach erneuter Kompilierung aus dem Admin-Interface.
* **Pflegen:** Die Werte werden im Admin-Interface gesetzt. Bei an Konfigurationen gebundenen Optionen je Konfigurationsknoten unterschiedlich (siehe `attachTo`).
* **Lesen:** im Template über `$wsOptions.get(…)`.

***

## Modulübersicht

**Beispiel / Ausschnitt über** `$wsOptions`

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= $wsOptions | json }}
```

**JSON-Ausgabe**

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "get": "ƒ()"
}
```

Anmerkung: `ƒ()` kennzeichnet eine Funktion.

**Methoden in der Übersicht**

| **Methode** | **Rückgabe-Typ**        | **Beschreibung**                                                            |
| ----------- | ----------------------- | --------------------------------------------------------------------------- |
| `get()`     | abhängig vom Optionstyp | Liest den Wert einer Template-Option (global oder je Konfigurationsknoten). |

***

## Templates

Template-Optionen lassen sich in jedem Template lesen.

***

## Variablen

Für `$wsOptions` stehen keine Variablen zur Verfügung. Der Zugriff erfolgt ausschließlich über die Methode `get()`.

***

## Methoden

### \$wsOptions.get()

Gibt den im Admin-Interface gepflegten Wert einer Template-Option zurück. Ohne zweiten Parameter wird eine globale Option gelesen. Bei Optionen, die mit `attachTo` an einen Konfigurationsknoten gebunden sind, geben Sie die Knoten-ID als zweiten Parameter an.

**Signatur**\
`$wsOptions.get(name, nodeId)`

**Rückgabe**\
Der gepflegte Wert der Option. Der Typ entspricht dem bei der Definition festgelegten Optionstyp (`String`, `Bool`, `Int`, `Float`, `Enum`).\
Wurde die Option im Admin-Interface noch nicht explizit gesetzt, wird `null` zurückgegeben. Prüfen Sie den Rückgabewert daher vor der Verwendung (z. B. mit `if`), damit das Template bei einer noch nicht gepflegten Option nicht ungewollt leer bleibt.

**Parameter**

| **Name** | **Typ** | **Pflicht** | **Beschreibung**                                                                                                              |
| -------- | ------- | ----------- | ----------------------------------------------------------------------------------------------------------------------------- |
| `name`   | string  | ja          | Name der Option, wie im Template definiert.                                                                                   |
| `nodeId` | string  | nein        | ID des Konfigurationsknotens. Nur bei `attachTo`-Optionen anzugeben (siehe unten). Ohne Angabe wird der globale Wert gelesen. |

**Beispiel** – globale Option:

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= $wsOptions.get("intValue") }}
```

Gibt den Wert der Option `intValue` aus.

**Beispiel** – an einen Konfigurationsknoten gebundene Option:

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= $wsOptions.get("attached", "payment.payment.bill") }}
```

Gibt den Wert der Option `attached` für die Zahlungsart mit dem Konfigurationsknoten `payment.payment.bill` (z. B. „Vorkasse") zurück. Der zweite Parameter ist nötig, weil dieselbe Option bei frei erstellbaren Konfigurationen, etwa einer Konfiguration je Zahlungsart, pro Knoten unterschiedlich gesetzt sein kann (z. B. bei „Vorkasse" deaktiviert, bei „Google Pay" aktiviert).

#### nodeId – die ID des Konfigurationsknotens

<Note>
  Verwechseln Sie die **Konfigurationsknoten-ID** (`nodeId`) nicht mit dem Feld `id` innerhalb einer Konfiguration. Die Konfiguration `payment.payment` enthält beispielsweise ein eigenes Feld `id` (eine „technische ID") – dieses kann **nicht** als `nodeId` verwendet werden.
</Note>

Damit Sie die korrekte Knoten-ID zur Hand haben, stellen die folgenden Objekte ein Feld `nodeId` bereit:

* [`$wsAccount`](/frontend/referenz/module/wsAccount): `addressFields`
* [`$wsAsse`](/frontend/referenz/module/wsasse): `asseConfigs`
* [`$wsCategories`](/frontend/referenz/module/wscategories): `fields`, `customFields`
* [`$wsConfig`](/frontend/referenz/module/wsconfig): `countries`, `payments`, `shippingMethods`, `shippingMethodGroups`, `currency`, `emails`, `listElements`, `redirects`
* [`$wsForm`](/frontend/referenz/module/wsform): `loadType` / `loadAllTypes` sowie deren `fields` / `loadField`

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{ foreach $payment in $wsConfig.payments }}
  {{= $wsOptions.get("attached", $payment.nodeId) }}
{{ /foreach }}
```

Hier liefert `$payment.nodeId` die Knoten-ID der jeweiligen Zahlungsart, die direkt als zweiter Parameter übergeben wird.

***

## Aktionen

Für `$wsOptions` stehen keine Aktionen zur Verfügung.

***

## Beispiele

### Zahlungsarten je Zahlungsart im Footer ein- oder ausblenden

In diesem Beispiel wird eine an `payment.payment` gebundene Option definiert, die im Footer nur die Zahlungsarten anzeigt, für die die Option im Admin-Interface aktiviert wurde. So können Sie pro Zahlungsart entscheiden was angezeigt wird, ohne das Template anzupassen.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{ option "methodLocationFooter" with
  {
    "type": "Bool",
    "attachTo": "payment.payment"
  }
}}

{{ foreach $method in $wsConfig.payments }}
  {{ if $wsOptions.get("methodLocationFooter", $method.nodeId) }}
    <p>{{= $method.name }}</p>
  {{ /if }}
{{ /foreach }}
```

**Ergebnis**\
Im Footer werden nur die Zahlungsarten angezeigt, für die die Option "`methodLocationFooter`" aktiviert ist. Da diese Option an `payment.payment` gebunden ist, wird sie pro Zahlungsart über deren `nodeId` gelesen. Wenn die Option für eine Zahlungsart nicht gesetzt ist, gibt `get()` den Wert `null` zurück und der `if`-Zweig wird nicht ausgeführt.

***

## Weiterführende Links

* [Template-Optionen definieren](/frontend/referenz/optionen) – Syntax, Typen, Wertgrenzen, `attachTo` und Darstellung im Admin-Interface.
* [\$wsConfig](/frontend/referenz/module/wsconfig) – liefert u. a. `payments` inklusive `nodeId`.
* [Konfiguration per Code](/frontend/die-basics/konfiguration-per-code) – Konfiguration direkt im Template.
* [Storefront API Optionen](/schnittstellen/storefront-api/storefront-api-optionen) - dieselben Optionswerte über die Storefront-API auslesen.
