$wsWatchList
Mit dem $wsWatchList Modul können Sie auf die Merklisten (Wunschlisten) des Nutzers zugreifen und diese im Frontend anzeigen. Sie können prüfen, ob Produkte auf einer Merkliste sind, Produkte hinzufügen oder entfernen und die Merkliste im Warenkorb darstellen. In diesem Abschnitt erfahren Sie, wie Sie Merklisten laden und verwalten können.
Inhaltsverzeichnis
Modulübersicht
Um die verfügbaren Daten der Merkliste einzusehen, können Sie sich diese in einem JSON-ähnlichen Format ausgeben lassen. Dies ist hilfreich, um die Struktur und Inhalte der Produkte auf der Merkliste zu verstehen oder auch Fehler zu debuggen.
Beispiel / Ausschnitt über $wsWatchList
{{= $wsWatchList | json }}
JSON-Ausgabe:
{
"watchLists": [
{
"watchListId": "...",
"watchListName": "..."
}
],
"countWatchListsWithProduct": "ƒ()",
"isProductOnWatchList": "ƒ()",
"loadWatchList": "ƒ()",
"loadWatchListItemId": "ƒ()"
}Anmerkung: ƒ() kennzeichnet eine Funktion.
Variablen und Methoden in der Übersicht
Name | Rückgabe-Typ | Beschreibung |
|---|---|---|
| array | Gibt eine Liste mit allen Merklisten des Nutzers aus. |
| string | Gibt die ID der Merkliste aus. |
| string | Gibt den Namen der Merkliste aus. |
| map | Lädt eine Merkliste anhand ihrer ID. |
| bool | Prüft, ob ein Produkt auf einer bestimmten Merkliste vorhanden ist. |
| int | Gibt die Anzahl der Merklisten aus, auf denen ein bestimmtes Produkt liegt. |
| string | Gibt die ID des Merklisten-Eintrags für ein bestimmtes Produkt zurück. |
Templates
Merkliste-Produkte können über $wsWatchList auf jedem beliebigen Template geladen. Dort können sie in den Warenkorb gelegt oder aus der Merkliste entfernt werden. Zusätzlich ist es möglich, die Merkliste im Header oder im Offcanvas-Flyout anzuzeigen.
Variablen
$wsWatchList.watchLists
Gibt eine Liste aller Merklisten des Nutzers aus.
{{ foreach $myWatchlistVariable in $wsWatchList.watchLists }}
{{= $myWatchlistVariable.watchListId }} - {{= $myWatchlistVariable.watchListName }}
{{ /foreach }}
Methoden
$wsWatchList.loadWatchList()
Lädt eine Merkliste anhand ihrer ID.
Signatur$wsWatchList.loadWatchList(watchlistId)
Rückgabemap - WatchList-Map mit allen Daten.
Parameter
Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| string | ja | ID der Merkliste. |
Beispiel, das die Standard-Merkliste lädt.
{{ var $myWatchList = $wsWatchList.loadWatchList("watchlist_1_default") }}
Mit Verwendung der Funktion $wsWatchList.loadWatchList() stehen verschiedene Variablen zur Verfügung, um weitere Daten zur Merkliste abzurufen und auszugeben. Nachfolgend eine Übersicht, welche Variablen verfügbar sind.
Merklisten-Daten (Rückgabe von $wsWatchList.loadWatchList() )
Zunächst ist es notwendig, die Map mit den Merklisten-Daten, wie im obigen Beispiel dargestellt, einer lokalen Variable zuzuweisen. Diese kann anschließend an verschiedenen Stellen im Template verwendet werden.
JSON-Ausgabe der Variablen:
{
"id": "...",
"watchListName": "...",
"items": [
{
"id": "...",
"freeFields": { },
"product": { ... }
}
]
}
Variablen in der Übersicht
Variable | Typ | Beschreibung |
|---|---|---|
| string | ID der Merkliste. |
| string | Name der Merkliste. |
| array | Liste der Produkte auf der Merkliste. |
| string | ID des Merklisten-Eintrags. |
| map | Benutzerdefinierte Felder zum Merklisten-Eintrag (z.B. Notizen, gewünschte Menge). |
| map | Produktdaten (Map “Product”). |
$wsWatchList.isProductOnWatchList()
Prüft, ob ein Produkt auf einer bestimmten Merkliste vorhanden ist.
Signatur$wsWatchList.isProductOnWatchList(watchlistId, productId)
Rückgabebool - true, wenn das Produkt auf der Merkliste ist, sonst false.
Parameter
Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| string | ja | ID der Merkliste. |
| string | ja | ID des Produkts. |
Beispiel, das prüft, ob ein Produkt auf der Merkliste ist.
{{ if $wsWatchList.isProductOnWatchList("watchlist_1_default", $product.id) }}
<span>Auf der Merkliste</span>
{{ /if }}
$wsWatchList.countWatchListsWithProduct()
Gibt die Anzahl der Merklisten aus, auf denen ein bestimmtes Produkt liegt.
Signatur$wsWatchList.countWatchListsWithProduct(productId)
Rückgabeint - Anzahl der Merklisten, auf denen das Produkt liegt.
Parameter
Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| string | ja | ID des Produkts. |
Beispiel, das die Anzahl der Merklisten mit einem Produkt ausgibt:
Auf {{= $wsWatchList.countWatchListsWithProduct($product.id) }} Merklisten
$wsWatchList.loadWatchListItemId()
Gibt die ID des Merklisten-Eintrags für ein bestimmtes Produkt zurück. Diese ID wird benötigt, um das Produkt von der Merkliste zu entfernen.
Signatur$wsWatchList.loadWatchListItemId(watchlistId, productId)
Rückgabestring - ID des Merklisten-Eintrags.
Parameter
Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| string | ja | ID der Merkliste. |
| string | ja | ID des Produkts. |
Beispiel, das die Eintrag-ID eines Produkts lädt.
{{ var $myItemId = $wsWatchList.loadWatchListItemId("watchlist_1_default", $product.id) }}Aktionen
Aktionen zu diesem Modul, die Änderungen auslösen, sind separat im Kapitel “Aktionen” dokumentiert: https://websale.atlassian.net/wiki/spaces/WSDOKU/pages/2999517547
Beispiele für die Anzeige von Merkliste-Informationen
Prüfen, ob die Merkliste Produkte enthält.
In diesem Beispiel wird geprüft, ob Produkte auf der Merkliste enthalten sind, und gibt die Anzahl der Produkte aus.
{{ if $wsWatchList.items }}
<p>Es gibt {{= $wsWatchList.items | len }} Produkte auf der Merkliste</p>
{{ /if }}
Eigenschaften der Produkte auf der Merkliste
Nachdem die Daten der Merkliste geladen und einer Variable zugewiesen wurden, können Sie diese flexibel ausgeben. Die Zuweisung kann wie folgt erfolgen:
Produktdaten anzeigen
In diesem Beispiel werden die üblichen Produktinfos ausgegeben, wie zum Beispiel der Produktname, Preis und Bild.
{{ if $wsWatchList.items }}
{{ foreach $product in $wsWatchList.items }}
<img src="{{= $watchListItem.product.custom.image.thumbnail }}" alt="{{= $watchListItem.product.name }}">
<p>Produktname: {{= $watchListItem.product.name }}</p>
<p>Preis: {{= $watchListItem.product.price }}</p>
{{ /foreach }}
{{ /if }}
Produktvarianten Anzeigen
In diesem Beispiel wird geprüft, ob sich eine Produktvariante auf der Merkliste befindet. Im positiven Fall werden die Eigenschaften der Produktvariante ausgelesen.
{{if $wsWatchList.items}}
{{ foreach $watchListItem in $wsWatchList.items }}
...
{{ if $watchListItem.product.variantSelection }}
{{ foreach $varAttr in $watchListItem.product.variantSelection | keys }}
<p>{{= $varAttr}}: {{= $watchListItem.product.variantSelection[$varAttr] }} </p>
{{ /foreach }}
{{ /if }}
{{ /foreach }}
...
{{/if}}
Freifelder auf der Merkliste zeigen
In diesem Beispiel wird geprüft, ob das Produkt Freifelder besitzt, wie zum Beispiel Herkunftsland oder Gewicht, und zeigt diese an.
{{if $wsWatchList.items}}
{{ foreach $watchListItem in $wsWatchList.items }}
...
{{ if $watchListItem.freeFields }}
{{ foreach $freeFieldName in $watchListItem.freeFields | keys }}
<p>{{= $freeFieldName}}: {{= $watchListItem.freeFields[$freeFieldName] }}</p>
{{ /foreach }}
{{ /if }}
{{ /foreach }}
...
{{/if}}
Produkt in den Warenkorb legen
In diesem Beispiel wird gezeigt wie ein Produkt aus der Merkliste in den Warenkorb gelegt wird.
{{if $wsWatchList.items}}
{{ foreach $watchListItem in $wsWatchList.items }}
...
{{ var $basketItemAdd = $wsActions.create("BasketItemAdd", tag=$watchListItem.id) }}
{{ if $basketItemAdd.error }}
Es sind Fehler aufgetreten:
{{ foreach $error in $basketItemAdd.errors }}
{{ if $error.text }}
<p> {{= $error.text }} </p>
{{ else }}
<p> {{= $error.code }} </p>
{{ /if }}
{{ /foreach }}
{{ /if }}
<form method="post" action="{{= $wsViews.viewUrl('basket.htm') }}">
<input type="hidden" name="wscsrf" value="{{= $basketItemAdd.csrf }}">
<input type="hidden" name="wsact" value="{{= $basketItemAdd.id }}">
<input type="hidden" name="wstarget" value="{{= $wsViews.viewUrl('basket.htm') }}">
<input type="hidden" name="productId" value="{{= $watchListItem.product.id }}">
<input type="hidden" name="quantity" value="1">
{{ foreach $freeFieldName in $watchListItem.freeFields | keys }}
<input type="hidden" name="freeFields.{{= $freeFieldName}}" value="{{= $watchListItem.freeFields[$freeFieldName] }}">
{{ /foreach }}
<button type="submit">in den Warenkorb</button>
</form>
{{ /foreach }}
{{ else }}
...
{{/if}}
Produkt aus der Merkliste löschen
In diesem Beispiel wird gezeigt wie ein Produkt aus der Merkliste gelöscht wird.
{{if $wsWatchList.items}}
{{ foreach $watchListItem in $wsWatchList.items }}
...
{{ var $watchListItemDelete = $wsActions.create("WatchListItemDelete", tag=$watchListItem.id) }}
{{ if $watchListItemDelete.error }}
Es sind Fehler aufgetreten:
{{ foreach $error in $watchListItemDelete.errors }}
{{ if $error.text }}
<p> {{= $error.text }} </p>
{{ else }}
<p> {{= $error.code }} </p>
{{ /if }}
{{ /foreach }}
{{ /if }}
<form method="post" action="{{= $wsViews.viewUrl('basket.htm') }}">
<input type="hidden" name="wscsrf" value="{{= $watchListItemDelete.csrf }}">
<input type="hidden" name="wsact" value="{{= $watchListItemDelete.id }}">
<input type="hidden" name="wstarget" value="{{= $wsViews.viewUrl('basket.htm') }}">
<input type="hidden" name="productId" value="{{= $watchListItem.product.id }}">
<input type="hidden" name="watchListItemId" value="{{= $watchListItem.id }}">
<button type="submit">löschen</button>
</form>
{{ /foreach }}
{{ else }}
...
{{/if}}
Weitere Praxisbeispiele zur Verwendung der Merkliste und Merklisten-Funktionen befinden sich hier: → Praxisbeispiele Merkliste