$wsSession

$wsSession

Eine Session ist eine temporäre Sitzung, die mit dem ersten Betreten des Shops beginnt und während des gesamten Besuchs des Nutzers bestehen bleibt. Sie speichert verschiedene Daten und Statusinformationen, um den Shop-Besuch zu steuern und Nutzerinteraktionen zu verfolgen. Dazu gehören beispielsweise Warenkorb-Daten, Nutzerstatus, der Testmodus oder Verweise zur Herkunft des Besuchers.

Über das $wsSession-Modul können diese Informationen abgerufen werden.


Inhaltsverzeichnis


Modulübersicht

Die Session beginnt mit dem ersten Betreten des Shops und bleibt für eine definierte Zeit bestehen. Während dieser Zeit können verschiedene Daten und Statusinformationen in der Session erfasst werden.

Eine Session hat eine standardmäßige Gültigkeit von 2 Stunden, kann jedoch über die Einstellungen im Admin Interface angepasst werden.

Eine Session endet automatisch nach Ablauf der definierten Zeit oder wird vorzeitig geschlossen, wenn:

  • Der Kunde seine Bestellung abgeschlossen hat.

  • Der Kunde sich aus seinem Kundenkonto abmeldet.

  • Der Kunde sich neu im Kundenkonto anmeldet (dadurch wird eine neue Session gestartet).


Beispiel / Ausschnitt über $wsSession

{{= $wsSession | json }}


JSON-Ausgabe

{ "id": "...", "referer": "...", "userReferer": "...", "isInvalid": false, "isLocked": false, "get": "ƒ()", "set": "ƒ()" }

Anmerkung: ƒ() kennzeichnet eine Funktion.


Variablen und Methoden in der Übersicht

Name

Rückgabe-Typ

Beschreibung

Name

Rückgabe-Typ

Beschreibung

id

string

Gibt die ID der aktuellen Session aus.

referer

string

Gibt die externe Seite aus, über die der Nutzer in den Shop gelangt ist (z.B. Google, Facebook).

userReferer

string

Gibt einen frei definierbaren Wert aus, den der Nutzer im Shop gesetzt hat. Gesetzt wird er über ein Eingabefeld mit dem Namen ws_user_ref im Template.

isInvalid

bool

true wenn Session ungültig, sonst false.

isLocked

bool

true wenn Session gesperrt (Bezahlvorgang), sonst false.

set()

-

Setzt eine Session-Variable.

get()

string

Gibt den Wert einer zuvor mit set() gespeicherten Session-Variable zurück.

 


Templates

Auf die Daten des $wsSession-Moduls kann auf allen Templates zugegriffen werden.


Variablen

 

$wsSession.id

Gibt die ID der aktuellen Session aus.

Session-ID: {{= $wsSession.id }}

 

$wsSession.referer

Gibt die externe Seite aus, über die der Nutzer in den Shop gelangt ist, zum Beispiel eine Suchmaschine oder ein soziales Netzwerk. Der Wert wird automatisch beim ersten Seitenaufruf gesetzt und ist auch in den Bestelldaten enthalten.

Referer: {{= $wsSession.referer }}

 

$wsSession.userReferer

Gibt eine frei definierbaren Wert aus, den der Nutzer im Shop gesetzt hat. Gesetzt wird er über ein Eingabefeld mit dem Namen ws_user_ref im Template. Ob und wie das Feld eingesetzt wird, entscheidet das jeweilige Template-Design. Der Wert ist ebenfalls in den Bestelldaten enthalten.

User-Referer: {{= $wsSession.userReferer }}

 

$wsSession.isInvalid

Prüft, ob die Session gültig ist. Gibt true aus, wenn die Session ungültig ist.

{{ if $wsSession.isInvalid }} // Die Session ist ungültig. {{ else }} // Die Session ist gültig. {{ /if }}

 

$wsSession.isLocked

Gibt true aus, wenn die Session gesperrt ist. Eine Sperrung erfolgt während Online-Bezahlvorgängen (z.B. PayPal, Klarna), um parallele Änderungen am Warenkorb zu verhindern.

{{ if $wsSession.isLocked }} // Session ist wegen Bezahlvorgang gesperrt {{ else }} // Session ist nicht gesperrt {{ /if }}

 


Methoden

$wsSession.set()

Setzt eine Session-Variable. Diese Werte bleiben über alle Folgeseiten hinweg gültig, bis sie überschrieben oder gelöscht werden.


Signatur
$wsSession.set(key, value)

Parameter

Name

Typ

Pflicht

Beschreibung

Name

Typ

Pflicht

Beschreibung

key

string

ja

Name der Session-Variable.

value

string

ja

Wert der Session-Variable.


Beispiel, das eine Kategorie in der Session speichert.

{{ $wsSession.set("lastViewedCategory", "Laufschuhe") }}

 



$wsSession.get()

Gibt den Wert einer zuvor mit set() gespeicherten Session-Variable zurück. Gibt einen leeren String zurück, wenn die Variable nicht existiert.


Signatur
$wsSession.get(key)

Rückgabe
string - Wert der Session-Variable.

Parameter

Name

Typ

Pflicht

Beschreibung

Name

Typ

Pflicht

Beschreibung

key

string

ja

Name der Session-Variable.


Beispiel, das eine gespeicherte Kategorie ausliest.

{{ if $wsSession.get("lastViewedCategory") }} Kategorie: {{= $wsSession.get("lastViewedCategory") }} {{ /if }}

 


Aktionen


Aktionen zu diesem Modul sind separat im Kapitel Aktionen dokumentiert: Session


Beispiele

Ausgabe der aktuelle SessionID

<!-- Gibt ID der aktuellen Sitzung aus --> {{= $wsSession.id}}

 

Prüfen, ob Session gesperrt ist

Eine Session kann vorübergehend gesperrt werden, wenn ein Käufer eine Zahlungsart mit Online-Clearing wählt, bei der er auf eine externe Seite weitergeleitet wird (z. B. PayPal, Kreditkarte, Sofortüberweisung). Während der Sperrung sind keine weiteren Aktionen im Shop möglich, um Abweichungen zu verhindern – beispielsweise, wenn der Kunde in einem anderen Tab Produkte hinzufügt.

Die Sperrung wird aufgehoben, sobald der Käufer den Bezahlvorgang abschließt oder abbricht. Sollte dies nicht möglich sein (z. B. wenn das externe System nicht erreichbar ist oder das Bezahlfenster geschlossen wurde), kann der Käufer eine neue Sitzung starten. Dabei bleibt sein Warenkorb und seine Anmeldung erhalten.

Falls der Käufer den Shop während einer Sperrung aufruft, kann eine Hinweismeldung angezeigt werden:

{{ if $wsSession.isLocked }} <p>Ihre Session ist aufgrund eines ausstehenden Zahlungsvorgangs gesperrt.</p> {{ else }} <p>Ihre Session ist nicht gesperrt.</p> {{ /if }}

 

Session entsperren

Falls eine Session aufgrund eines ausstehenden Bezahlvorgangs gesperrt ist, kann der Käufer sie manuell entsperren, indem er eine neue Sitzung startet. Dabei werden der aktuelle Warenkorb, alle bisherigen Eingaben sowie die Anmeldung übernommen. Dies ist hilfreich, wenn der Bezahlvorgang nicht abgeschlossen werden konnte, z. B. aufgrund eines geschlossenen Zahlungsfensters oder eines technischen Problems auf der externen Zahlungsseite.

{{ if $wsSession.isLocked }}    ...    {{ var $sessionUnlockAction = $wsActions.create("SessionUnlock") }}    <form method="post" action="{{= $wsViews.current.url() }}">        <input type="hidden" name="wscsrf" value="{{= $sessionUnlockAction.csrf }}">        <input type="hidden" name="wstarget" value="{{= $wsViews.current.url() }}">        <input type="hidden" name="wsact" value="{{= $sessionUnlockAction.id }}">        <button type="submit">Entsperren</button>    </form> {{ else }}    ... {{ /if }}

 

Bestimmte Sessiondaten setzen und abfragen

Mit der Funktion $wsSession.set können individuelle Werte in der aktuellen Session eines Nutzers gespeichert werden. Diese Werte bleiben über alle Folgeseiten hinweg gültig, bis sie überschrieben oder gelöscht werden.

Dies kann für verschiedene Zwecke genutzt werden, z. B. um:

  • Benutzervorlieben zu speichern (z. B. bevorzugte Sprache oder Kategorie).

  • Dynamische Shop-Anzeigen basierend auf vorherigem Verhalten zu steuern.

  • Kundenspezifische Anpassungen für ein personalisiertes Einkaufserlebnis vorzunehmen uvm.

Angenommen, ein Kunde navigiert zu einer bestimmten Kategorie, z. B. "Laufschuhe". Wir können diese Information in der Session speichern, um sie auf anderen Seiten zu verwenden.

{{ $wsSession.set("lastViewedCategory", "Laufschuhe") }}

Anschließend kann diese Information auf Folgeseiten genutzt werden, um dem Nutzer relevante Inhalte und Produktempfehlungen anzuzeigen:

{{ if $wsSession.get("lastViewedCategory") }} <h1>Entdecken Sie neue Produkte in der Kategorie {{= $wsSession.get("lastViewedCategory") }}.</h1> <!-- Laden von entsprechenden Produkten --> {{ /if }}

 

Zugriff auf Session-Daten am Beispiel des Referers

Mit $wsSession können verschiedene in der Session gespeicherte Werte ausgelesen und genutzt werden. Ein Beispiel dafür ist der Referer, der angibt, von welcher externen Seite der Nutzer in den Shop gelangt ist.

Dies kann nützlich sein, um zu analysieren, ob Besucher beispielsweise über eine Suchmaschine, eine Werbeanzeige oder einen Partnerlink gekommen sind.

<p>Referer: {{= $wsSession.referer }}</p>

 

URL-Parameter auslesen und Session-Variable setzen

Angenommen, es gibt einen URL-Parameter promoCode, der bestimmt, ob ein spezielles Werbebanner für eine Rabattaktion angezeigt werden soll. Wenn dieser Parameter vorhanden ist und einen bestimmten Wert hat, wird eine Session-Variable gesetzt, die dann auf anderen Seiten ausgelesen wird.

https://www.beispielshop.de/?promoCode=SUMMER2024 oder https://www.beispielshop.de/?promoCode=WELCOME10

Beim Aufruf einer Seite wird geprüft, ob der Promo-Code als URL-Parameter übergeben wurde. Falls ja, wird der Wert in der Session gespeichert, um ihn später auswerten zu können.

{{ if $wsViews.current.params.promoCode }} {{ $wsSession.set("activePromo", $wsViews.current.params.promoCode) }} {{ /if }}

Nun kann auf einer anderen Seite geprüft werden, welcher Promo-Code gespeichert wurde, um entsprechend ein passendes Rabatt-Banner auszugeben:

{{ if $wsSession.get("activePromo") == "SUMMER2024" }} <div class="promo-banner"> <p>🔥 Sommer-Special! <strong>10 % Rabatt</strong> mit dem Code SUMMER2024!</p> </div> {{ elseif $wsSession.get("activePromo") == "WELCOME10" }} <div class="promo-banner"> <p>🎉 Willkommen! <strong>10 € Rabatt</strong> auf Ihre erste Bestellung mit WELCOME10!</p> </div> {{ else }} <div class="promo-banner"> <p>🛍️ Jetzt einkaufen und exklusive Angebote entdecken!</p> </div> {{ /if }}

 


Weiterführende Links