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

# Speicherbarer Warenkorb

> Wie angemeldete Käufer in WEBSALE V8s ihren Warenkorb unter einem Namen ablegen, später wiederverwenden und im Kundenkonto verwalten.

Ein gespeicherter Warenkorb ist ein benannter Satz Produkte, den ein angemeldeter Käufer jederzeit wieder in seinen aktuellen Warenkorb übernehmen kann, ganz oder in Teilen.

Zwei Anlässe machen das wertvoll. Der eine ist die wiederkehrende Bestellung: Wer jeden Monat dieselben zwölf Artikel braucht, legt sie einmal als „Monatsbedarf" ab. Der andere ist der unterbrochene Einkauf: Der Käufer hat zusammengestellt, was er braucht, will aber noch nicht bestellen, und findet die Auswahl beim nächsten Besuch wieder.

Anders als der Cookiewarenkorb ist das nichts, was im Hintergrund passiert. Der Käufer legt den Warenkorb bewusst an, benennt ihn und kann mehrere davon nebeneinander führen.

Die Funktion muss für Ihren Shop freigeschaltet werden. Weitere Informationen erhalten Sie von der WEBSALE AG. Voraussetzung ist außerdem ein Kundenkonto, denn die Warenkörbe hängen am angemeldeten Käufer.

> [!WARNING]
>
> Speicherbarer Warenkorb und geräteübergreifender Warenkorb funktionieren nicht mit Web-to-Print-Produkten.

## Was der Käufer tun kann

Die Funktionen verteilen sich auf drei Orte.

| Ort | Möglichkeiten |
| - | - |
| Warenkorbseite | den aktuellen Warenkorb unter einer Bezeichnung speichern, ihn zu einem bestehenden gespeicherten Warenkorb hinzufügen oder einen bestehenden damit ersetzen |
| Verwaltungsseite im Kundenkonto | Liste anzeigen, Bezeichnung ändern, Warenkorb löschen, einzelne Positionen löschen, beliebige Positionen in den aktuellen Warenkorb legen, ersetzen und hinzufügen |
| jedes beliebige Template | Liste anzeigen, einen Warenkorb löschen, hinzufügen, ersetzen und zur Verwaltung verlinken |

Die dritte Zeile ist der Grund, warum sich die Funktion gut in eine Kopfzeile oder eine Seitenleiste einbauen lässt. Der Käufer sieht seine gespeicherten Warenkörbe dann überall, nicht nur an einer Stelle im Kundenkonto.

Nicht jede Warenkorbposition wandert mit. Wunschlistenpositionen, automatisch eingefügte Positionen, versteckte Positionen, versteckte Set-Unterartikel und Gutscheinprodukte werden beim Speichern übergangen. Der gespeicherte Warenkorb kann deshalb weniger Positionen enthalten als der aktuelle.

## Schritt 1: Template zuweisen

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<Templates>
   SavedBasketsManage = ws_savedbaskets_manage.htm
</Templates>
```

Referenz: [Abschnitt Templates](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/grundlagen-und-technik.md#templates)

## Schritt 2: Meldungen hinterlegen

Jede Aktion erzeugt eine Rückmeldung. Ohne diese Texte bleibt der Käufer im Unklaren, ob sein Warenkorb gespeichert wurde.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<NotifyMessages-Txt>
   SavedBasket-Saved        = Ihr Warenkorb wurde unter der Bezeichnung '~SAVEDBASKET-AffectedBasket~' gespeichert.
   SavedBasket-Created      = Sie haben einen neuen Warenkorb mit der Bezeichnung '~SAVEDBASKET-AffectedBasket~' angelegt.
   SavedBasket-Replaced     = Der gespeicherte Warenkorb '~SAVEDBASKET-AffectedBasket~' wurde ersetzt.
   SavedBasket-Added        = Der aktuelle Warenkorb wurde zu '~SAVEDBASKET-AffectedBasket~' hinzugefügt.
   SavedBasket-Deleted      = Der gespeicherte Warenkorb '~SAVEDBASKET-AffectedBasket~' wurde gelöscht.
   SavedBasket-DeletedEntry = Das Produkt wurde aus '~SAVEDBASKET-AffectedBasket~' gelöscht.
   SavedBasket-DescrEmpty   = Bitte geben Sie eine Bezeichnung für Ihren Warenkorb ein.
</NotifyMessages-Txt>
```

`~SAVEDBASKET-AffectedBasket~` setzt den Namen des betroffenen Warenkorbs ein. Beim Löschen greift der Shop dabei auf den gemerkten Namen des gerade gelöschten Warenkorbs zurück, die Meldung bleibt also vollständig.

Referenz: [Abschnitt NotifyMessages-Txt](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/texte-und-meldungen.md#notifymessages-txt)

### Gültigkeitsprüfung beim Laden

Standardmäßig prüft der Shop beim Laden eines gespeicherten Warenkorbs, ob die enthaltenen Produkte noch existieren, und entfernt fehlende automatisch. Das hält die Liste sauber, löscht aber ohne Rückfrage.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<Basic>
   SavedBasket-SkipProdValidityCheck = yes   # yes | no, Standard: no
</Basic>
```

Mit `yes` bleiben die Positionen stehen. Klammern Sie dann mit `{[ST-SavedBasketPosition_OK](/v8s/referenz/tags/savedbasket-speicherbare-warenkoerbe#die-positionen-eines-gespeicherten-warenkorbs)}` und `{!ST-SavedBasketPosition_OK}`, damit der Käufer sieht, welche Position nicht mehr gültig ist.

Referenz: [Abschnitt Basic](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/grundlagen-und-technik.md#basic)

## Schritt 3: Link zur Verwaltung setzen

Der Link funktioniert auf jedem Template.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{ST-LoggedIn}
   <a href="~WS-SavedBasketsManageLink~">Gespeicherte Warenkörbe</a>
{/ST-LoggedIn}
```

Klammern Sie den Link mit `{[ST-LoggedIn](/v8s/referenz/tags/st/seitenzustand-und-navigation)}`. Ein nicht angemeldeter Käufer hat keine gespeicherten Warenkörbe, der Link liefe für ihn ins Leere.

## Schritt 4: Speichern auf der Warenkorbseite anbieten

Das Formular [`FORM-SaveBasket`](https://dokumentation.websale.de/v8s/referenz/tags/form-formulare#nicht-beschriebene-formulare) legt einen neuen gespeicherten Warenkorb an. Die Bezeichnung ist Pflicht, deshalb greift ohne Eingabe die Meldung `SavedBasket-DescrEmpty`.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{FORM-SaveBasket}
   <form action="~FORM-SaveBasket~" method="post">
      <label for="sbDescr">Diesen Warenkorb speichern als</label>
      <input type="text" id="sbDescr" name="~SAVEDBASKET-Description_input~">
      <input type="submit" name="~BT-SavedBasket_new~" value="Speichern">
   </form>
{/FORM-SaveBasket}
```

Die Klammerung ist nicht schmückend. `{FORM-SaveBasket}` blendet sich selbst aus, wenn der Warenkorb leer ist oder der Käufer die zulässige Anzahl gespeicherter Warenkörbe erreicht hat. Dasselbe leistet `{[SAVEDBASKET-NewSavedBasketsLeft](/v8s/referenz/tags/savedbasket-speicherbare-warenkoerbe#die-tags-im-uberblick)}`, falls Sie noch weitere Elemente an dieselbe Bedingung hängen wollen.

### Hinzufügen und Ersetzen

Statt einen neuen Warenkorb anzulegen, kann der Käufer den aktuellen Warenkorb an einen bestehenden anhängen oder einen bestehenden damit überschreiben. Beides läuft über eine Auswahlliste und eine Schaltfläche.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<form action="~FORM-SaveBasket~" method="post">
   <select name="~SAVEDBASKET-AddToSavedBasketSelection~">
      ~SAVEDBASKET-AddToSavedBasketSelection~
   </select>
   <input type="submit" name="~BT-SavedBasket_add~" value="Hinzufügen">
</form>
```

[`~SAVEDBASKET-AddToSavedBasketSelection~`](https://dokumentation.websale.de/v8s/referenz/tags/savedbasket-speicherbare-warenkoerbe#die-tags-im-uberblick) listet nur Warenkörbe auf, die noch Positionen aufnehmen können. Für das Ersetzen tauschen Sie die Auswahlliste gegen [`SAVEDBASKET-ReplaceWithBasketSelection`](https://dokumentation.websale.de/v8s/referenz/tags/savedbasket-speicherbare-warenkoerbe#die-tags-im-uberblick) und die Schaltfläche gegen eine der beiden Ersetzen-Schaltflächen.

| Schaltfläche | Verhalten |
| - | - |
| `BT-SavedBasket_replace_confirm` | führt zuerst auf die Bestätigungsseite |
| `BT-SavedBasket_replace_noconfirm` | ersetzt sofort |

> [!WARNING]
>
> Ersetzen löscht den bisherigen Inhalt des gespeicherten Warenkorbs. Verwenden Sie dafür die Variante mit Bestätigung. Die Variante ohne Bestätigung ist nur dann vertretbar, wenn Sie sie deutlich beschriften.

## Schritt 5: Verwaltungstemplate erstellen

Legen Sie das Template unter dem Dateinamen an, den Sie in Schritt 1 eingetragen haben. Es enthält vier Bereiche, von denen immer genau einer sichtbar ist.

| Bereich | Zweck |
| - | - |
| [`SAVEDBASKET-Overview`](https://dokumentation.websale.de/v8s/referenz/tags/savedbasket-speicherbare-warenkoerbe#die-tags-im-uberblick) | Liste aller gespeicherten Warenkörbe |
| [`SAVEDBASKET-Edit`](https://dokumentation.websale.de/v8s/referenz/tags/savedbasket-speicherbare-warenkoerbe#die-tags-im-uberblick) | einen gespeicherten Warenkorb ansehen, ändern und verwenden |
| [`SAVEDBASKET-ConfirmDelete`](https://dokumentation.websale.de/v8s/referenz/tags/savedbasket-speicherbare-warenkoerbe#die-tags-im-uberblick) | Rückfrage vor dem Löschen |
| [`SAVEDBASKET-ConfirmReplace`](https://dokumentation.websale.de/v8s/referenz/tags/savedbasket-speicherbare-warenkoerbe#die-tags-im-uberblick) | Rückfrage vor dem Ersetzen |

Die Hinweismeldungen aus Schritt 2 geben Sie mit `{[MSG-SavedBasket_Notify](/v8s/referenz/tags/msg-meldungen#im-shopsystem-vorhanden-bisher-nicht-beschrieben)}` aus, sinnvollerweise oberhalb der vier Bereiche.

### Die Übersicht

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{SAVEDBASKET-Overview}

   {SAVEDBASKET-Baskets}
      <p>Sie haben ~SAVEDBASKET-Baskets~ gespeicherte Warenkörbe.</p>
      <table>
         {@SAVEDBASKET-Baskets}
            <tr>
               <td>~SAVEDBASKET-BasketsCounter~</td>
               <td><a href="~SAVEDBASKET-EditLink~">~SAVEDBASKET-Description~</a></td>
               <td>~SAVEDBASKET-NumberOfPositions~ Positionen, ~SAVEDBASKET-NumberOfProducts~ Artikel</td>
               <td>angelegt am ~SAVEDBASKET-Created-Date~ um ~SAVEDBASKET-Created-Time~</td>
               <td>
                  <a href="~SAVEDBASKET-UseLink~">verwenden</a>
                  {SAVEDBASKET-AddBasketToSavedBasketLink}
                     <a href="~SAVEDBASKET-AddBasketToSavedBasketLink~">aktuellen Warenkorb hinzufügen</a>
                  {/SAVEDBASKET-AddBasketToSavedBasketLink}
                  <a href="~SAVEDBASKET-ReplaceWithBasketLink~">ersetzen</a>
                  <a href="~SAVEDBASKET-DeleteSavedBasketLink~">löschen</a>
               </td>
            </tr>
         {/@SAVEDBASKET-Baskets}
      </table>
   {/SAVEDBASKET-Baskets}

   {!SAVEDBASKET-Baskets}
      <p>Sie haben noch keinen Warenkorb gespeichert.</p>
   {/!SAVEDBASKET-Baskets}

{/SAVEDBASKET-Overview}
```

[`SAVEDBASKET-Baskets`](https://dokumentation.websale.de/v8s/referenz/tags/savedbasket-speicherbare-warenkoerbe#die-tags-im-uberblick) leistet drei Dinge zugleich: als Einzeltag gibt es die Anzahl aus, als Klammerung prüft es, ob überhaupt etwas gespeichert ist, und als Schleife durchläuft es die Liste. [`~SAVEDBASKET-BasketsCounter~`](https://dokumentation.websale.de/v8s/referenz/tags/savedbasket-speicherbare-warenkoerbe#die-tags-im-uberblick) zählt dabei ab 1.

`{SAVEDBASKET-AddBasketToSavedBasketLink}` als Klammerung blendet sich aus, sobald der betreffende Warenkorb die zulässige Anzahl an Positionen erreicht hat. Der Käufer sieht den Link also gar nicht erst, wenn er nicht funktionieren würde.

Zu jedem Löschen- und Ersetzen-Link gibt es eine Variante ohne Rückfrage: `SAVEDBASKET-DeleteSavedBasketNoConfirmLink` und `SAVEDBASKET-ReplaceWithBasketNoConfirmLink`. Diese führen die Aktion sofort aus. Nehmen Sie in der Übersicht die Varianten mit Bestätigung, sonst löscht ein Fehlklick einen Warenkorb, den der Käufer über Wochen gepflegt hat.

### Bearbeiten, löschen, ersetzen

Der Bereich `SAVEDBASKET-Edit` zeigt einen einzelnen gespeicherten Warenkorb. Darin gehören in ein Formular mit [`FORM-SavedBasketManage`](https://dokumentation.websale.de/v8s/referenz/tags/form-formulare#nicht-beschriebene-formulare):

* das Eingabefeld [`~SAVEDBASKET-Description_input~`](https://dokumentation.websale.de/v8s/referenz/tags/savedbasket-speicherbare-warenkoerbe#die-tags-im-uberblick) für die Bezeichnung
* die Positionen mit [`~PR-SavedBasketQuantity~`](https://dokumentation.websale.de/v8s/referenz/tags/savedbasket-speicherbare-warenkoerbe#die-positionen-eines-gespeicherten-warenkorbs), [`~PR-SavedBasketVariations~`](https://dokumentation.websale.de/v8s/referenz/tags/savedbasket-speicherbare-warenkoerbe#die-positionen-eines-gespeicherten-warenkorbs) und dem Löschlink [`~PR-SavedBasketDeleteEntry~`](https://dokumentation.websale.de/v8s/referenz/tags/savedbasket-speicherbare-warenkoerbe#die-positionen-eines-gespeicherten-warenkorbs)
* die Klammerung `{ST-SavedBasketPosition_OK}` für Positionen, die noch gültig sind
* die Schaltfläche `~BT-SavedBasket_Save~` zum Übernehmen der Änderungen

Die beiden Bestätigungsbereiche sind kurz. Sie nennen den betroffenen Warenkorb mit `~SAVEDBASKET-Description~`, bieten die Variante ohne Rückfrage als Bestätigung an und führen mit [`~SAVEDBASKET-BackLink~`](https://dokumentation.websale.de/v8s/referenz/tags/savedbasket-speicherbare-warenkoerbe#die-tags-im-uberblick) zurück zur aufrufenden Seite.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{SAVEDBASKET-ConfirmDelete}
   <p>Möchten Sie den Warenkorb „~SAVEDBASKET-Description~" wirklich löschen?</p>
   <a href="~SAVEDBASKET-DeleteSavedBasketNoConfirmLink~">Ja, löschen</a>
   <a href="~SAVEDBASKET-BackLink~">Abbrechen</a>
{/SAVEDBASKET-ConfirmDelete}
```

## Die Tags im Überblick

### Liste und einzelner Warenkorb

| Tag | Verwendung |
| - | - |
| [`WS-SavedBasketsManageLink`](https://dokumentation.websale.de/v8s/referenz/tags/ws/kunde-anmeldung-und-konto#die-tags-im-uberblick) | Link zur Verwaltungsseite, auf jedem Template |
| `SAVEDBASKET-Baskets` | Anzahl, Klammerung und Schleife über die gespeicherten Warenkörbe |
| `SAVEDBASKET-BasketsCounter` | Zählnummer innerhalb der Schleife |
| `SAVEDBASKET-Description` | Bezeichnung |
| `SAVEDBASKET-Description_input` | Feldname für die Eingabe der Bezeichnung |
| `SAVEDBASKET-NumberOfPositions` | Anzahl der Positionen |
| `SAVEDBASKET-NumberOfProducts` | Anzahl der Artikel |
| `SAVEDBASKET-Created-Date` / `-Time` | Zeitpunkt der Erstellung |
| `SAVEDBASKET-Expires-Date` / `-Time` | Verfallszeitpunkt |
| `SAVEDBASKET-AffectedBasket` | Name des betroffenen Warenkorbs, für die Meldungen |
| `SAVEDBASKET-NewSavedBasketsLeft` | Klammerung, greift solange weitere Warenkörbe möglich sind |

Der Verfallszeitpunkt liegt in der aktuellen Umsetzung immer zehn Jahre in der Zukunft und wird bei jeder Änderung neu gesetzt. Die beiden Tags liefern also einen Wert, aus dem sich praktisch nichts ableiten lässt. Bauen Sie keine Ablaufwarnung darauf.

### Bereiche und Formulare

| Tag | Verwendung |
| - | - |
| `SAVEDBASKET-Overview` | Bereich Übersicht |
| `SAVEDBASKET-Edit` | Bereich Bearbeiten |
| `SAVEDBASKET-ConfirmDelete` | Bereich Löschen bestätigen |
| `SAVEDBASKET-ConfirmReplace` | Bereich Ersetzen bestätigen |
| `MSG-SavedBasket_Notify` | Hinweismeldung |
| `FORM-SaveBasket` | Formular zum Speichern des aktuellen Warenkorbs, auch als Klammerung |
| `FORM-SavedBasketManage` | Formular zum Bearbeiten eines gespeicherten Warenkorbs |

### Links und Schaltflächen

| Tag | Verwendung |
| - | - |
| [`SAVEDBASKET-EditLink`](https://dokumentation.websale.de/v8s/referenz/tags/savedbasket-speicherbare-warenkoerbe#die-tags-im-uberblick) | zum Bearbeiten |
| [`SAVEDBASKET-UseLink`](https://dokumentation.websale.de/v8s/referenz/tags/savedbasket-speicherbare-warenkoerbe#die-tags-im-uberblick) | zum Verwenden |
| `SAVEDBASKET-BackLink` | zurück zur aufrufenden Seite |
| `SAVEDBASKET-AddBasketToSavedBasketLink` | aktuellen Warenkorb hinzufügen, auch als Klammerung |
| `SAVEDBASKET-DeleteSavedBasketLink` | zur Löschbestätigung |
| `SAVEDBASKET-DeleteSavedBasketNoConfirmLink` | sofort löschen |
| `SAVEDBASKET-ReplaceWithBasketLink` | zur Ersetzenbestätigung |
| `SAVEDBASKET-ReplaceWithBasketNoConfirmLink` | sofort ersetzen |
| `SAVEDBASKET-AddToSavedBasketSelection` | Auswahlliste der aufnahmefähigen Warenkörbe |
| `SAVEDBASKET-ReplaceWithBasketSelection` | Auswahlliste der ersetzbaren Warenkörbe |
| [`BT-SavedBasket_new`](https://dokumentation.websale.de/v8s/referenz/tags/savedbasket-speicherbare-warenkoerbe#den-aktuellen-warenkorb-ablegen) | neuen Warenkorb anlegen |
| [`BT-SavedBasket_add`](https://dokumentation.websale.de/v8s/referenz/tags/savedbasket-speicherbare-warenkoerbe#den-aktuellen-warenkorb-ablegen) | hinzufügen |
| `BT-SavedBasket_replace_confirm` | ersetzen mit Rückfrage |
| `BT-SavedBasket_replace_noconfirm` | ersetzen ohne Rückfrage |
| `BT-SavedBasket_Save` | Änderungen übernehmen |

### Positionen

| Tag | Verwendung |
| - | - |
| `PR-SavedBasketQuantity` | Menge der Position |
| `PR-SavedBasketVariations` | Varianten und Texteingaben der Position |
| `PR-SavedBasketDeleteEntry` | Link zum Löschen der Position |
| `ST-SavedBasketPosition_OK` | Klammerung, greift bei noch gültigen Positionen |
| [`SAVEDBASKET-PositionEmployeeID`](https://dokumentation.websale.de/v8s/referenz/tags/savedbasket-speicherbare-warenkoerbe#die-tags-im-uberblick) | EmployeeID der Position |
| [`SAVEDBASKET-PositionGiftPackage`](https://dokumentation.websale.de/v8s/referenz/tags/savedbasket-speicherbare-warenkoerbe#die-tags-im-uberblick) | Klammerung, greift bei Geschenkverpackung |

Das Löschen einer Position entfernt auch die zugehörigen Set-Unterartikel. Ein Set bleibt so nicht halbiert zurück.

## Verwandte Themen

* Wegweiser: [Warenkorb anzeigen und löschen](https://dokumentation.websale.de/v8s/warenkorb/warenkorb-anzeigen-loeschen.md)
* Wegweiser: [Cookiewarenkorb verwenden, für die automatische Variante ohne Zutun des Käufers](https://dokumentation.websale.de/v8s/warenkorb/cookiewarenkorb-verwenden.md)
* Wegweiser: [Anmeldung und Registrierung, denn die Funktion setzt ein Kundenkonto voraus](https://dokumentation.websale.de/v8s/kundenkonto/anmeldung-registrierung.md)
* Referenz: Styles für speicherbare Warenkörbe


## Related topics

- [Geräteübergreifender Warenkorb](https://dokumentation.websale.de/v8s/warenkorb/geraeteuebergreifender-warenkorb.md)
- [CB- (Cookie-Warenkorb)](https://dokumentation.websale.de/v8s/referenz/tags/cb.md)
- [Grundlagen und Technik](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/grundlagen-und-technik.md)
- [basket - Warenkorb](https://dokumentation.websale.de/konfiguration/basket-warenkorb.md)
- [Mehrwertsteuersätze im Warenkorb](https://dokumentation.websale.de/v8s/referenz/tags/basket/mehrwertsteuersaetze.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.