$wsSession - Session

$wsSession - Session

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.


Inhaltsübersicht


Templates

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


Datenübersicht & Zugriff

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

Die aktuellen Informationen einer Session lassen sich mit folgender Anweisung ausgeben:

<!--   {{= $wsSession |json }} -->

Die Ausgabe in der Developer-Konsole des Browsers könnte dann wie folgt aussehen:

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

Beispiele

Ausgabe der aktuelle SessionID

<!-- Gibt ID der aktuellen Sitzung zurück --> {{= $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 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 }}

Referenz

In der Modul-Referenz für $wsSession finden Sie eine Übersicht aller verfügbaren Eigenschaften und Parameter.

© 2025 WEBSALE AG | Impressum | Datenschutz