Der Warenkorb und die Merkliste dienen einem Kunden dazu, Artikel für den Bestellprozess zu sammeln. Artikel im Warenkorb werden durch den Bestellprozess zur Bestellung und die Merkliste bietet dem Kunden die Möglichkeit Artikel zu speichern und diese zu einem späteren Zeitpunkt zu bestellen.
Damit die Artikel im Warenkorb und der Merkliste über mehrere Besuche des Shops vom gleichen Gerät gespeichert werden, muss der Kunden den funktionalen Cookies zustimmen.
Damit die Artikel im Warenkorb und der Merkliste über mehrere Besuche des Shops von unterschiedlichen Geräten gespeichert werden, muss der Kunde ein Kundenkonto erstellt haben und im Shop angemeldet sein.
Platzierung über das CMS
Damit der Warenkorb und die Merkliste im Shop dargestellt werden, müssen die entsprechenden CMS-Ansichten platziert werden. Siehe auch die Dokumentation der CMS-Ansichten und Seiten.
Für den Warenkorb sollte die Ansicht "Bestellprozess: Warenkorb" aus dem Shop-Theme auf der Seite mit dem shortlink "basket" platziert werden.
Für die Merkliste sollte die Ansicht "Bestellprozess: Merkliste" aus dem Shop-Theme auf der Seite mit dem shortlink "wishlist" platziert werden.
Eine CartEntity definieren
Es ist in bestimmten Fällen sinnvoll, eine eigene CartEntity zu definieren. Hauptsächlich ist das wichtig, wenn man nicht direkt mit einem shopSessionArticle arbeitet und dennoch einen Eintrag im Warenkorb / Merkliste / etc. darstellen, und dessen Eventstrucktur verwendent möchte.
Um eine CartEntity zu definieren, muss man eine Klasse definieren, welche das Interface \Brandbox\ShopCore\Shop\Checkout\lib\Struct\CartEntityInterface
implementiert. Idealerweise leitet diese Klasse dann auch von \Brandbox\ShopCore\Shop\Checkout\lib\Struct\CartEntityAbstract
ab, um zukünftige Änderungen am Interface leichter vom Produkt migriert zu bekommen.
Zusätzlich sollte diese Entität dann über das Event \Brandbox\ShopCore\Shop\Checkout\lib\event\OnPopulateCartEntities
zu den $entities
hinzugefügt werden. Danach kann diese Entität, zusammen mit anderen Arten, über \Brandbox\ShopCore\Shop\Checkout\Manager::getCartEntities
abgerufen werden. In OnPopulateCartEntities
sollte immer der mitgegebene $context
geprüft werden. Wenn die Entität zum Beispiel nur auf der Merkliste dargestellt werden sollt, muss geprüft werden, dass der Kontext \Brandbox\ShopCore\Shop\Checkout\lib\Struct\CartContextWishlist
entspricht.
Meistens ist er auch sinnvoll, eine eigene Kontextklasse zu definieren. Diese sollte dann von \Brandbox\ShopCore\Shop\Checkout\lib\Struct\CartContextAbstract
ableiten und Checkout\Manager::getCartEntities
mitgegeben werden. Das ist notwendig, wenn nur Entitäten dieses Typs zurückgeliefert werden sollen. Auch notwendig ist es, auf diesen Kontext in OnPopulateCartEntities
zu reagieren.
Events
Die Benennung innerhalb der Events orientiert sich an folgender Terminologie.
Begriff | Beschreibung |
---|---|
Cart(-Entity) | Ist eine Entität, die sich im Bestellprozess befindet. |
CartSessionArticle | Ist eine konkrete Art einer Cart-Entity. CartSessionArticle ist eine Cart-Entity, welche shopSessionArticle im Bestellprozess, Warenkorb und Merkliste verwaltet. |
Basket(-Entity) /CartContextBasket | Ist eine CartEntity welche im Warenkorb dargestellt werden soll |
Wishlist(-Entity) /CartContextWishlist | Ist eine CartEntity welche auf der Merkliste dargestellt werden soll |
Übersicht
(Stand 24.01.2022 - noch nicht aktuell)
Wichtige Einstiegspunkte
Einstiegspunkt | Beschreibung |
---|---|
\Brandbox\ShopCore\Shop\Checkout\Manager::getCartEntities | Liefert alle CartEntities zurück, welche über \Brandbox\ShopCore\Shop\Checkout\lib\event\OnPopulateCartEntities hinzugefügt werden. Die Filterung der Einträge geschieht dann über die Mitgabe der richtigen \Brandbox\ShopCore\Shop\Checkout\lib\Struct\CartContextAbstract Kontextklasse. Zum Beispiel fügt der Shop eine Entität nur hinzu, wenn zum Beispiel der Kontext \Brandbox\ShopCore\Shop\Checkout\lib\Struct\CartContextSessionBasket mitgegeben wurde. |
\Brandbox\ShopCore\View\Basket\lib\Subscriber\ViewBasketSubscriber::getSubscribedEvents | Auflistung der Hauptevents der Standardimplementation des Warenkorbs |
\Brandbox\ShopCore\View\Wishlist\lib\Subscriber\ViewWishlistSubscriber::getSubscribedEvents | Auflistung der Hauptevents der Standardimplementation der Merkliste |
\Brandbox\ShopCore\View\CartSessionArticle\Lib\Subscriber* | Auflistung des Integrationsevents des CartSessionArticles in die einzelnen Views. Hier werden tatsächliche Werte eines shopSessionArticles verarbeitet und ausgegeben. |