Skip to main content

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.

Das $wsStore-Modul ist ein Key-Value-Store (Schlüssel-Wert-Speicher) für das Frontend. Darüber lassen sich beliebige Daten unter einem frei wählbaren Schlüssel ablegen, später wieder auslesen oder gezielt löschen. Es ist das passende Werkzeug überall dort, wo Informationen benötigt werden, die das Shopsystem im Standard nicht vorhält.

Modulübersicht

Beispiel / Ausschnitt über $wsStore
{{= $wsStore | json }}
JSON-Ausgabe
{
  "set": "ƒ()",
  "get": "ƒ()",
  "delete": "ƒ()",
  "increment": "ƒ()"
}
Anmerkung: "ƒ()" kennzeichnet eine Funktion. Methoden in der Übersicht
NameRückgabe-TypBeschreibung
set()-Speichert einen Wert unter dem angegebenen Schlüssel.
get()any / nullGibt den gespeicherten Wert für den angegebenen
Schlüssel zurück.
delete()-Löscht den Eintrag für den angegebenen Schlüssel.
increment()-Erhöht einen Zählerwert unter dem angegebenen Schlüssel.

Methoden

$wsStore.set()

Speichert einen beliebigen Wert unter einem Schlüssel. Der Wert kann später über get() wieder abgerufen werden. Optional kann eine Gültigkeitsdauer (ttl) in Sekunden angegeben werden, nach der der Eintrag automatisch entfernt wird. Ohne ttl gilt ein Standardwert von 365 Tagen. Signatur
$wsStore.set(key, value, ttl)

Rückgabe

Parameter
NameTypPflichtBeschreibung
keystringjaDer Schlüssel, unter dem der Wert gespeichert wird.
Frei wählbar.
Empfehlung:
sprechende, eindeutige Namen mit Präfix verwenden
(z.B. 'productViews-' + $cProduct.id), um Kollisionen
mit anderen Modulen auszuschließen.
valueanyjaDer zu speichernde Wert. (Integer, String, Boolean, Objekt,
Array)
ttlintneinGültigkeitsdauer in Sekunden. Nach Ablauf wird der Eintrag
automatisch entfernt. Ohne Angabe gilt ein Standardwert
von 365 Tagen.
Beispiel - Session-Marker setzen, damit ein Produktaufruf nur einmal pro Besucher gezählt wird Um auf der Produktseite die Anzeige “X mal in den letzten 24 Stunden angesehen” zu realisieren, muss verhindert werden, dass derselbe Besucher den Zähler durch mehrfaches Neuladen der Seite verfälscht. Dafür wird pro Besucher ein Marker gesetzt - solange dieser Marker existiert, wird der Produktaufruf für diesen Besucher nicht erneut gezählt. $wsSession.id ist die eindeutige Session-ID des aktuellen Besuchers. Sie wird automatisch vom Shopsystem bereitgestellt und muss nicht selbst vergeben werden. 14400 Sekunden entsprechen 4 Stunden – so lange gilt der Marker.
{{ $wsStore.set('productViewSession-' + $cProduct.id + $wsSession.id, true, 14400) }}
Ergebnis
Ab dem Setzen liefert $wsStore.get('productViewSession-<ProduktID><SessionID>') für 4 Stunden den Wert true zurück. Der eigentliche Zähler, der dem Besucher die Anzeige “X mal in den letzten 24 Stunden angesehen” ausgibt, wird über increment() gepflegt. Erst nach Ablauf der 4 Stunden darf der Produktaufruf desselben Besuchers erneut in den Zähler einfließen.

$wsStore.get()

Gibt den Wert zurück, der zuvor mit set() unter dem angegebenen Schlüssel gespeichert wurde. Ist kein Eintrag vorhanden oder ist der Eintrag abgelaufen, wird null zurückgegeben. Signatur
$wsStore.get(key)
Rückgabe
any - Der gespeicherte Wert, oder null , wenn kein Eintrag vorhanden ist oder der Eintrag abgelaufen ist.
Parameter
NameTypPflichtBeschreibung
keystringjaDer Schlüssel, dessen Wert abgerufen werden soll.
Beispiel - Anzeige “X mal in den letzten 24 Stunden angesehen” auf der Produktseite Um dem Besucher auf einer Produktdetailseite eine Anzeige wie “X mal in den letzten 24 Stunden angesehen” auszugeben, wird der zuvor mit increment() hochgezählte Wert ausgelesen. Existiert noch kein Eintrag (weil das Produkt in den letzten 24 Stunden noch nicht aufgerufen wurde), liefert get() null und die Anzeige wird übersprungen.
{{ var $productViews = $wsStore.get('productViews-' + $cProduct.id) }}
{{ if $productViews }}
    {{= $productViews }} mal in den letzten 24 Stunden angesehen
{{ /if }}
Ergebnis, wenn $productViews den Wert 10 enthält
10 mal in den letzten 24 Stunden angesehen

$wsStore.delete()

Löscht den Eintrag für den angegebenen Schlüssel aus dem Store. Nach dem Löschen gibt get() für diesen Schlüssel null zurück. Signatur
$wsStore.delete(key)

Rückgabe\

Parameter
NameTypPflichtBeschreibung
keystringjaDer Schlüssel, dessen Eintrag gelöscht werden soll.

$wsStore.increment()

Erhöht einen Zählerwert unter dem angegebenen Schlüssel um den angegebenen Wert. Existiert der Schlüssel noch nicht, wird er mit dem Wert von amount angelegt. Diese Methode sollte bevorzugt gegenüber einer Kombination aus get() und set() verwendet werden, wenn ein Zähler erhöht werden soll.

Das liegt daran, dass get() und set() das Hochzählen in zwei Schritten durchführen - erst den aktuellen Wert lesen, dann den erhöhten Wert speichern. Rufen zwei Besucher die Seite gleichzeitig auf, lesen beide in Schritt 1 denselben Wert, beispielsweise 5. Beide speichern anschließend 6. Der Zähler steht am Ende auf 6, obwohl er auf 7 stehen müsste.
Mit increment() passiert das Lesen und erhöhen in einem einzigen Schritt, sodass beide Aufrufe korrekt gezählt werden. Signatur
$wsStore.increment(key, amount, ttl)
Parameter
NameTypPflichtBeschreibung
keystringjaDer Schlüssel, dessen Zählerwert erhöht werden soll.
amountintneinDer Wert, um den der Zähler erhöht wird.
Standardmäßig 1.
ttlintneinGültigkeitsdauer in Sekunden. Nach Ablauf wird
der Eintrag automatisch entfernt.
Wird ttl weggelassen, gilt ein Standardwert
von 365 Tagen.
Beispiel - Produktaufrufe zählen, einmal pro Session Ziel ist die Anzeige “X mal in den letzten 24 Stunden angesehen” auf der Produktseite. Damit derselbe Besucher den Zähler nicht durch mehrfaches Neuladen verfälscht, wird pro Session zusätzlich ein Marker gesetzt, der verhindert, dass derselbe Besucher das Produkt mehrfach zählt. $wsSession.id ist die eindeutige Session-ID des aktuellen Besuchers. Sie wird automatisch vom Shopsystem bereitgestellt und muss nicht selbst vergeben werden.
{{ var $myViewKey = 'productViews-' + $cProduct.id }}
{{ var $mySessionKey = 'productViewSession-' + $cProduct.id + $wsSession.id }}

{{ if not $wsStore.get($mySessionKey) }}
    {{ $wsStore.increment($myViewKey, 1, 86400) }}
    {{ $wsStore.set($mySessionKey, true, 14400) }}
{{ /if }}
Ergebnis
Der Zähler productViews-<ProduktID> wird pro Besucher höchstens einmal alle 4 Stunden erhöht. Die anschließende Anzeige mit get() zeigt dem Besucher z.B.: “7 mal in den letzten 24 Stunden angesehen”. Nach Ablauf von 24 Stunden startet der Zähler automatisch wieder bei null.