Zum Hauptinhalt springen
Mit dem $wsBasket-Modul lesen Sie die Daten des aktuellen Warenkorbs im Frontend. Die enthaltenen Produkte (Positionen), deren Mengen und Preise sowie die berechneten Gesamtwerte und Steuerinformationen. Auf dieser Seite geht es um das Lesen der Warenkorb-Daten. Alles, was den Warenkorb verändert (Produkt hinzufügen, Menge ändern, entfernen), ist unter Aktionen → Basket beschrieben, weil dort die auslösenden Aktionen und ihre Parameter dokumentiert sind.

Grundkonzept

Der Warenkorb speichert die vom Kunden ausgewählten Produkte und berechnet automatisch die Mengen, Preise und Steuern. Über dieses Modul können Sie diese Werte auslesen und anzeigen.

Aufbau

Die Warenkorb-Daten sind in drei Ebenen verschachtelt:
  • Warenkorb ($wsBasket) - die Gesamtwerte über alle Positionen hinweg, z. B. total oder totalQuantity.
  • Positionen ($wsBasket.items) - eine Liste der Warenkorb-Einträge. Jeder Eintrag steht für ein Produkt im Warenkorb und hat eigene Werte wie Menge und Positionssumme.
  • Produkt (item.product) - innerhalb jeder Position befindet sich auch das zugehörige Produkt mit seinen Stammdaten (Name, Bild, ID).
Sie lesen also Summen vom Warenkorb, positionsbezogene Werte von der jeweiligen Position und Produktdetails vom Produkt der Position.

Steuerbefreiung

Mehrere Variablen bilden zusammen die Steuerbefreiung ab und gehören inhaltlich zusammen: isTaxExempt ist der primäre Schalter, totalTaxDeduction und totalPreDeduction liefern die Beträge für eine „abzgl. MwSt.”-Zeile, und usedExemptionRule zusammen mit billingCountry/shippingCountry zeigt, welche Adressen für die Prüfung herangezogen werden. Prüfen Sie für Steuerhinweise immer zuerst isTaxExempt.

Zeitpunkt und zuletzt geänderter Artikel

Der Template-Code läuft beim Seitenaufbau. $wsBasket enthält daher den Warenkorb-Zustand nach der zuletzt ausgeführten Aktion. lastBasketAction und lastUpdatedItem beschreiben diese letzte Änderung. Nützlich, um beispielsweise direkt nach dem Hinzufügen eine Rückmeldung wie „Produkt X wurde hinzugefügt” anzuzeigen.

Modulübersicht

Beispiel / Ausschnitt über $wsBasket
{{= $wsBasket | json }}
JSON-Ausgabe
{
  "billingCountry": "...",
  "isTaxExempt": true,
  "items": [
    {
      "discountPrice": 0.0,
      "freeFields": { },
      "id": "...",
      "oneTimeFee": 0.0,
      "orgPrice": 0.0,
      "price": 0.0,
      "product": { },
      "quantity": 0.0,
      "total": 0.0,
      "totalGross": 0.0,
      "totalNet": 0.0,
      "totalTax": 0.0,
      "voucherIds": [...]
    }
  ],
  "lastBasketAction": "...",
  "lastUpdatedItem": {
    "categories": [...],
    "freeFields": { },
    "id": "...",
    "parentCategories": [...],
    "price": 0.0,
    "productNumber": "...",
    "quantity": 0.0,
    "taxId": "...",
    "voucherIds": [...]
  },
  "shippingCountry": "...",
  "total": 0.0,
  "totalCommission": 0.0,
  "totalGross": 0.0,
  "totalNet": 0.0,
  "totalQuantity": 0.0,
  "totalTax": 0.0,
  "totalTaxDeduction": 0.0,
  "totalPreDeduction": 0.0,
  "totalWeight": 0.0,
  "usedExemptionRule": "..."
}
Variablen des Warenkorbs (oberste Ebene)
VariableRückgabe-TypBeschreibung
totalQuantityfloatGesamtmenge aller Produkte im Warenkorb.
totalfloatGesamtbetrag des Warenkorbs.
totalNetfloatNettobetrag des Warenkorbs.
totalGrossfloatBruttobetrag des Warenkorbs.
totalTaxfloatMehrwertsteuer des Warenkorbs.
totalCommissionfloatGesamt-Provision.
totalWeightfloatGesamtgewicht aller Produkte im Warenkorb.
lastBasketActionstringLetzte Aktion am Warenkorb (z. B. "add", "remove", "update").
lastUpdatedItemmapZuletzt geänderter Artikel (Struktur siehe unten).
itemsarrayListe aller Warenkorb-Einträge (Struktur siehe unten).
isTaxExemptboolOb der aktuelle Warenkorb steuerbefreit ist.
totalTaxDeductionfloatBetrag der abgezogenen Steuer; nur > 0 bei aktiver Steuerbefreiung.
totalPreDeductionfloatGesamtbetrag vor dem Steuerabzug.
billingCountrystringLänderkennung der Rechnungsadresse (z. B. "DE").
shippingCountrystringLänderkennung der Lieferadresse (z. B. "DE").
usedExemptionRulestringAktive Steuerprüfregel ("shippingOnly" oder "shippingAndBilling").

Templates

Die Warenkorb-Daten lassen sich auf jeder Seite des Shops anzeigen. Übliche Darstellungen sind:
  • Offcanvas-Warenkorb: in einer Sidebar, als Flyout oder als OffCanvas-Element, für einen schnellen Überblick.
  • Warenkorb-Seite: eine detaillierte Übersicht mit Anpassungsmöglichkeiten.
  • Checkout und Bestellbestätigung: Darstellung während des Kaufprozesses und in Bestätigungs-E-Mails.

Variablen

$wsBasket.totalQuantity

Gibt die Gesamtmenge aller Produkte im Warenkorb aus.
Artikel im Warenkorb: {{= $wsBasket.totalQuantity }}

$wsBasket.total

Gibt den Gesamtbetrag des Warenkorbs aus. Verwenden Sie ihn für die Endsumme in Warenkorb und Checkout.
Gesamtbetrag: {{= $wsBasket.total | currency }}

$wsBasket.totalNet

Gibt den Nettobetrag des Warenkorbs aus.
Nettobetrag: {{= $wsBasket.totalNet | currency }}

$wsBasket.totalGross

Gibt den Bruttobetrag des Warenkorbs aus.
Bruttobetrag: {{= $wsBasket.totalGross | currency }}

$wsBasket.totalTax

Gibt die Mehrwertsteuer des Warenkorbs aus. Nutzen Sie sie für eine separate Steuerzeile in der Summenübersicht.
Mehrwertsteuer: {{= $wsBasket.totalTax | currency }}

$wsBasket.totalCommission

Gibt die Gesamt-Provision des Warenkorbs aus.
Provision: {{= $wsBasket.totalCommission | currency }}

$wsBasket.totalWeight

Gibt das Gesamtgewicht aller Produkte im Warenkorb aus. Nützlich, um z. B. einen Versandkosten- oder Gewichtshinweis anzuzeigen.
Gesamtgewicht: {{= $wsBasket.totalWeight }}

$wsBasket.lastBasketAction

Gibt die zuletzt am Warenkorb durchgeführte Aktion aus (z. B. "add", "remove", "update"). Werten Sie sie aus, um nach einer Änderung eine passende Rückmeldung anzuzeigen.
Letzte Aktion: {{= $wsBasket.lastBasketAction }}

$wsBasket.lastUpdatedItem

Gibt den zuletzt hinzugefügten oder geänderten Artikel aus. Verwenden Sie ihn zusammen mit lastBasketAction, um z. B. direkt nach dem Hinzufügen „Produkt X wurde hinzugefügt” anzuzeigen, ohne den ganzen Warenkorb durchsuchen zu müssen.
Zuletzt geändert: {{= $wsBasket.lastUpdatedItem.id }}
Menge: {{= int($wsBasket.lastUpdatedItem.quantity) }}

Eigenschaften von $wsBasket.lastUpdatedItem

EigenschaftRückgabe-TypBeschreibung
idstringProdukt-ID des Artikels.
productNumberstringArtikelnummer des Artikels.
pricefloatPreis des Artikels.
quantityfloatMenge des Artikels.
taxIdstringSteuersatz-ID des Artikels.
categoriesarrayKategorie-IDs, in denen sich der Artikel befindet.
parentCategoriesarrayÜbergeordnete Kategorie-IDs des Artikels.
freeFieldsmapFreie Felder des Artikels.
voucherIdsarrayAngewendete Gutschein-IDs für den Artikel.

$wsBasket.items

Gibt die Liste aller Warenkorb-Einträge (Positionen) aus. Über diese Liste iterieren Sie, um jede Position einzeln anzuzeigen.
{{ foreach $item in $wsBasket.items }}
  Artikel: {{= $item.product.name }} – Menge: {{= int($item.quantity) }}
{{ /foreach }}

Eigenschaften eines Eintrags in $wsBasket.items

EigenschaftRückgabe-TypBeschreibung
idstringWarenkorb-ID des Eintrags.
productmapDas zugehörige Produkt des Eintrags (Stammdaten wie Name, Bild, ID).
quantityfloatMenge des Eintrags.
pricefloatEinzelpreis des Eintrags.
orgPricefloatUrsprünglicher Preis vor Rabatten.
discountPricefloatRabattierter Preis (falls ein Rabatt aktiv ist).
oneTimeFeefloatEinmalige Gebühr (z. B. Einrichtungskosten).
totalfloatGesamtbetrag des Eintrags (Positionssumme).
totalNetfloatNettobetrag des Eintrags.
totalGrossfloatBruttobetrag des Eintrags.
totalTaxfloatMehrwertsteuer des Eintrags.
freeFieldsmapFreie Felder (z. B. Beschriftungen, Kommentare).
voucherIdsarrayAngewendete Gutschein-IDs für diesen Eintrag.

$wsBasket.isTaxExempt

Gibt aus, ob der aktuelle Warenkorb steuerbefreit ist. Dies ist der primäre Indikator für eine Steuerbefreiung – nutzen Sie ihn, um z. B. einen Hinweis „Steuerbefreite Lieferung” einzublenden.
{{ if $wsBasket.isTaxExempt }}
  Dieser Warenkorb ist steuerbefreit.
{{ /if }}

$wsBasket.totalTaxDeduction

Gibt den Betrag der abgezogenen Steuer aus. Der Wert ist nur größer als 0, wenn eine Steuerbefreiung aktiv ist. In Brutto-Shops stellen Sie damit z. B. eine Zeile „abzgl. MwSt.” dar.
{{ if $wsBasket.totalTaxDeduction > 0 }}
  Steuerabzug: {{= $wsBasket.totalTaxDeduction | currency }}
{{ /if }}

$wsBasket.totalPreDeduction

Gibt den Gesamtbetrag vor dem Steuerabzug aus. Zusammen mit totalTaxDeduction zeigen Sie so den Betrag vor und nach dem Abzug.
Betrag vor Steuerabzug: {{= $wsBasket.totalPreDeduction | currency }}

$wsBasket.billingCountry

Gibt die Länderkennung der Rechnungsadresse aus (z. B. "DE" für Deutschland).
Rechnungsland: {{= $wsBasket.billingCountry }}

$wsBasket.shippingCountry

Gibt die Länderkennung der Lieferadresse aus (z. B. "DE" für Deutschland).
Lieferland: {{= $wsBasket.shippingCountry }}

$wsBasket.usedExemptionRule

Gibt die aktive Steuerprüfregel aus. Mögliche Werte: "shippingOnly" (nur die Lieferadresse wird geprüft) oder "shippingAndBilling" (Liefer- und Rechnungsadresse werden geprüft). So erkennen Sie, welche Adressen über die Steuerbefreiung entscheiden.
{{ if $wsBasket.usedExemptionRule }}
  Aktive Prüfregel: {{= $wsBasket.usedExemptionRule }}
{{ /if }}

Methoden

Für $wsBasket stehen keine Methoden zur Verfügung.

Aktionen

Aktionen, die den Warenkorb verändern (Produkt hinzufügen, Menge ändern, entfernen), sind separat dokumentiert: Aktionen → Basket.

Beispiele für den Datenzugriff

Prüfen, ob Produkte im Warenkorb liegen

Prüfen Sie zuerst, ob überhaupt Positionen vorhanden sind, bevor Sie den Warenkorb anzeigen, sonst zeigen Sie eine leere Liste.
{{ if $wsBasket.items }}
  <p>Im Warenkorb befinden sich {{= $wsBasket.items | len }} Positionen.</p>
{{ else }}
  <p>Sie haben noch keine Produkte im Warenkorb.</p>
{{ /if }}
Ergebnis
Bei gefülltem Warenkorb erscheint die Anzahl der Positionen, sonst ein Hinweis auf den leeren Warenkorb.

Produkte im Warenkorb anzeigen

Sind Positionen vorhanden, iterieren Sie über items und zeigen je Position Produktname, Menge und Preise. Die Gesamtsummen stehen außerhalb der Schleife weil sie sonst für jede Position erneut ausgegeben werden würden.
{{ if $wsBasket.items }}
  {{ foreach $item in $wsBasket.items }}
    <a href="{{= $wsViews.url('Product', {productId: $item.product.id}) }}">
      <img src="{{= $item.product.custom.image.normal }}" alt="{{= $item.product.name }}">
    </a>
    <p>Produktname: {{= $item.product.name }}</p>
    <p>Menge: {{= int($item.quantity) }}</p>
    <p>Einzelpreis: {{= $item.price | currency }}</p>
    <p>Positionssumme: {{= $item.total | currency }}</p>
  {{ /foreach }}

  <p>Versandkosten: {{= $wsCheckout.sum.shippingCost | currency }}</p>
  <p>Gesamtsumme: {{= $wsBasket.total | currency }}</p>
{{ else }}
  <p>Sie haben keine Produkte im Warenkorb!</p>
{{ /if }}
Ergebnis
Jede Position wird mit Bild, Name, Menge und Preisen aufgelistet. Darunter erscheinen Versandkosten und Gesamtsumme einmalig.
Erzeugt einen Link auf die Warenkorbseite, die über das View-Template basket.htm umgesetzt ist.
<a href="{{= $wsViews.viewUrl('basket.htm') }}">Warenkorb ansehen</a>
Ergebnis
Der Link führt zur Warenkorbseite des Shops.

  • Aktionen → Basket – den Warenkorb verändern (hinzufügen, ändern, entfernen), weil $wsBasket selbst nur liest.
  • $wsCheckout – liefert ergänzende Werte wie die Versandkosten (sum.shippingCost) für die Summenanzeige.
  • $wsViews – erzeugt die in den Beispielen genutzten Produkt- und View-URLs.
  • Praxisbeispiele Warenkorb – durchgängige Praxisbeispiele für Warenkorb-Funktionen.
Sind Positionen vorhanden, iterieren Sie über items und zeigen je Position Produktname, Menge und Preise. Die Gesamtsummen stehen außerhalb der Schleife weil sie sonst für jede Position erneut ausgegeben werden würden.
{{ if $wsBasket.items }}
  {{ foreach $item in $wsBasket.items }}
    <a href="{{= $wsViews.url('Product', {productId: $item.product.id}) }}">
      <img src="{{= $item.product.custom.image.normal }}" alt="{{= $item.product.name }}">
    </a>
    <p>Produktname: {{= $item.product.name }}</p>
    <p>Menge: {{= int($item.quantity) }}</p>
    <p>Einzelpreis: {{= $item.price | currency }}</p>
    <p>Positionssumme: {{= $item.total | currency }}</p>
  {{ /foreach }}

  <p>Versandkosten: {{= $wsCheckout.sum.shippingCost | currency }}</p>
  <p>Gesamtsumme: {{= $wsBasket.total | currency }}</p>
{{ else }}
  <p>Sie haben keine Produkte im Warenkorb!</p>
{{ /if }}
Ergebnis
Jede Position wird mit Bild, Name, Menge und Preisen aufgelistet. Darunter erscheinen Versandkosten und Gesamtsumme einmalig.
Erzeugt einen Link auf die Warenkorbseite, die über das View-Template basket.htm umgesetzt ist.
<a href="{{= $wsViews.viewUrl('basket.htm') }}">Warenkorb ansehen</a>
Ergebnis
Der Link führt zur Warenkorbseite des Shops.

  • Aktionen → Basket – den Warenkorb verändern (hinzufügen, ändern, entfernen), weil $wsBasket selbst nur liest.
  • $wsCheckout – liefert ergänzende Werte wie die Versandkosten (sum.shippingCost) für die Summenanzeige.
  • $wsViews – erzeugt die in den Beispielen genutzten Produkt- und View-URLs.
  • Praxisbeispiele Warenkorb – durchgängige Praxisbeispiele für Warenkorb-Funktionen.