$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
ƒ() 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.
$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ückgabestring - 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.
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
Aktuelle Jahreszahl im Footer ausgeben
KombiniertcurrentTime mit dateFmt, um z. B. eine Copyright-Zeile immer aktuell zu halten.
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-Parametertransfer 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
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:- 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.
- Ist eine Variante angegeben, wird geprüft, ob sie am Zielprodukt existiert.
- Set-Produkte werden vollständig neu gebildet, also Hauptposition und Unterpositionen, geprüft gegen die Set-Definition im Ziel-Subshop.
- Die Menge wird gegen die im Ziel-Subshop zulässige Höchstmenge geprüft.
- Preise und Steuern werden im Ziel-Subshop neu ermittelt. Ein Preis- oder Währungsunterschied zwischen den Subshops schlägt also unmittelbar durch.
- 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.
- 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.
Abgrenzung zu Cookie- und Konto-Warenkorb
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
- general - Allgemeine Shopeinstellungen
- basket - Warenkorb - Konfiguration des Warenkorbs, Beigaben und Höchstmengen.
- $wsSession - Session-ID, die der Warenkorb-Transfer verwendet.
- Funktionen - globale Funktionen wie
dateFmt,isoToUnixundunixToIsozum Verarbeiten von Zeitstempeln.
