Skip to main content
Mit dem $wsSubshop Modul können Sie auf Subshop-Daten zugreifen. Typische Anwendungsfälle sind Sprachumschalter oder Links zwischen verschiedenen Länder- und Sprachversionen des Shops. In diesem Abschnitt erfahren Sie, wie Sie Subshop-Informationen auslesen und zwischen Subshops verlinken können.

Modulübersicht

Beispiel / Ausschnitt über $wsSubshop
JSON-Ausgabe
Anmerkung: ƒ() kennzeichnet eine Funktion. Variablen und Methoden in der Übersicht

Templates

Subshop-Daten werden typischerweise an folgenden Stellen eingesetzt:
  • Header: Sprachumschalter zwischen verschiedenen Subshops.
  • Footer: Links zu anderen Länder-/Sprachversionen des Shops.
  • Inhalte: Länderspezifische Hinweise oder Anpassungen.

Variablen

$wsSubshop.id

Gibt die ID des aktuellen Subshops aus.

$wsSubshop.currentTime

Gibt den aktuellen Zeitstempel im ISO-8601-Format aus (z. B. 2026-06-26T09:18:59.000Z). Diesen Wert formatieren Sie mit der globalen Funktion dateFmt() in ein lesbares Datum oder eine Uhrzeit.
Damit geben Sie z. B. die aktuelle Jahreszahl aus, etwa für eine Copyright-Angabe im Footer.

$wsSubshop.timeZone

Gibt die im Shop konfigurierte Zeitzone aus (z. B. Europe/Berlin). Dies ist die Zeitzone, die dateFmt() verwendet, wenn beim Formatieren keine eigene Zeitzone angegeben wird.

$wsSubshop.language

Gibt eine Map mit Sprachinformationen des aktuellen Subshops aus.

$wsSubshop.language.isoCode

Gibt den ISO-Sprachcode des aktuellen Subshops aus.

$wsSubshop.language.name

Gibt den Namen der Sprache des aktuellen Subshops aus.

$wsSubshop.subshops

Gibt eine Liste aller verfügbaren Subshop-IDs aus. Nützlich für die Erstellung eines Sprachumschalters oder einer Länderauswahl.

Methoden

$wsSubshop.subshopUrl()

Gibt die URL zur Startseite des angegebenen Subshops zurück. Die URL berücksichtigt automatisch die Domain des Ziel-Subshops sowie das Protokoll des aktuellen Aufrufs (http beziehungsweise https). Signatur
$wsSubshop.subshopUrl(subshopId, params)
Rückgabe
string - URL des angegebenen Subshops. null, wenn die Subshop-ID leer ist oder kein Subshop mit dieser ID existiert.
Parameter Beispiel, das die URL eines Subshops ausgibt.
Beispiel mit zusätzlichen Query-Parametern.
Ein typischer Anwendungsfall für params ist die Übernahme des Warenkorbs beim Subshop-Wechsel, siehe Warenkorb beim Subshop-Wechsel mitnehmen.

Aktionen

Für $wsSubshop stehen keine Aktionen zur Verfügung.

Beispiele

HTML-Lang-Attribut setzen

Aktuelle Sprache anzeigen

Kombiniert currentTime mit dateFmt, um z. B. eine Copyright-Zeile immer aktuell zu halten.
Ergebnis

Warenkorb beim Subshop-Wechsel mitnehmen

Jeder Subshop verfügt über eine eigene Session und somit auch über einen eigenen Warenkorb. Diese Warenkörbe bleiben dauerhaft getrennt. Sie werden nicht miteinander abgeglichen und eine Bestellung gehört immer zu genau dem Subshop, in dem der Bestellvorgang durchlaufen wurde. Wechselt ein Kunde den Subshop, startet er dort deshalb zunächst mit einem leeren Warenkorb. Beim Wechsel lassen sich die Positionen aber einmalig übernehmen. Dazu hängen Sie den Query-Parameter transfer mit der ID der aktuellen Session an die Ziel-URL an. Der Ziel-Subshop liest daraufhin den Warenkorb der angegebenen Session aus und legt die Positionen in seinem eigenen Warenkorb neu an. Dadurch entsteht kein gemeinsamer Warenkorb aus beiden Warenkörben, sondern eine Kopie des Warenkorbs zum Zeitpunkt des Wechsels. Anschließend entwickeln sich beide Warenkörbe unabhängig voneinander weiter. Spätere Änderungen im Quell-Subshop erreichen den Ziel-Subshop nicht mehr. Es gibt dafür keinen Konfigurationsknoten, die Funktion hängt allein an diesem Parameter.

Verwendung im Template

Der Parameter wird auf jeder Seite des Ziel-Subshops ausgewertet, nicht nur auf der Startseite. Sie können den Transfer daher auch mit einem Deeplink kombinieren.

Was übernommen wird

Der Transfer ist ein Kopiervorgang. Der Warenkorb der Quell-Session bleibt unverändert bestehen. Übernommen werden ausschließlich die Warenkorbpositionen. Login, Adressen, Gutscheine und der Stand des Bestellablaufs werden hingegen nicht übertragen. Die Positionen werden im Ziel-Subshop nicht einfach kopiert, sondern neu aufgebaut:
  1. Das Produkt wird zunächst über die Produkt-ID gesucht. Wird es darüber nicht gefunden, sucht der Shop ersatzweise über die Artikelnummer. Diese Suche berücksichtigt nur Produkte, die im Ziel-Subshop aktiv sind.
  2. Ist eine Variante angegeben, wird geprüft, ob sie am Zielprodukt existiert.
  3. Set-Produkte werden vollständig neu gebildet, also Hauptposition und Unterpositionen, geprüft gegen die Set-Definition im Ziel-Subshop.
  4. Die Menge wird gegen die im Ziel-Subshop zulässige Höchstmenge geprüft.
  5. Preise und Steuern werden im Ziel-Subshop neu ermittelt. Ein Preis- oder Währungsunterschied zwischen den Subshops schlägt also unmittelbar durch.
  6. Der Bestand wird im Ziel-Subshop neu reserviert.
Positionen, die sich im Ziel-Subshop nicht auflösen lassen, werden übersprungen. Die übrigen Positionen werden trotzdem übernommen. Der Warenkorb im Ziel-Subshop kann nach dem Transfer also weniger Positionen enthalten als ursprünglich. Jeder übersprungene Fall wird protokolliert, siehe Protokollierung.
Nicht übernommen werden außerdem:
  • Automatische Beigaben aus basket.autobasket. Diese werden im Ziel-Subshop anhand der dort gültigen Konfiguration neu erzeugt.
  • Bereits vorhandene identische Positionen. Liegt im Ziel-Warenkorb bereits dieselbe Position mit derselben Menge, wird sie nicht ein zweites Mal angelegt. Weicht die Menge ab, wird die Position zusätzlich angelegt.

Voraussetzungen

  • Das Produkt muss im Ziel-Subshop vorhanden und bestellbar sein.
  • Bei Set-Produkten muss die Set-Definition im Ziel-Subshop zur übertragenen Zusammenstellung passen.
  • Für die Position muss im Ziel-Subshop ausreichend Bestand reservierbar sein.
Der Wert von transfer ist eine Session-ID. Wer diese kennt, kann den zugehörigen Warenkorb auslesen. Verwenden Sie den Parameter deshalb ausschließlich für Links innerhalb des eigenen Shops und geben Sie die Session-ID nicht an Dritte weiter, etwa über externe Tracking-Parameter oder Weiterleitungen auf fremde Domains.

Protokollierung

Übersprungene Positionen erscheinen im Logmanager mit den folgenden Codes: Scheitert die Suche über die Artikelnummer aus technischen Gründen, erscheinen zusätzlich die Codes basket.searchProductIdByNumberNoDescriptor, basket.searchProductIdByNumberNoActiveProperty oder basket.searchProductIdByNumberSearchFailed. Ist die in transfer angegebene Session unbekannt oder nicht mehr lesbar, geschieht nichts und es wird auch nichts protokolliert. Prüfen Sie in diesem Fall zuerst, ob die übergebene Session-ID noch gültig ist. Der Cookie-Warenkorb (cookieBasketActive) und der Konto-Warenkorb (accountBasketActive) aus basket.basket sind kein Ersatz für den Transfer. Sie sichern den Warenkorb über Sitzungen beziehungsweise Geräte hinweg, nicht über Subshops. Da Subshops in der Regel unter eigenen Domains laufen, steht das Warenkorb-Cookie im anderen Subshop nicht zur Verfügung.

Weiterführende Links