Zum Ende der Metadaten springen
Zum Anfang der Metadaten

Sie zeigen eine alte Version dieser Seite an. Zeigen Sie die aktuelle Version an.

Unterschiede anzeigen Seitenhistorie anzeigen

« Vorherige Version anzeigen Version 12 Nächste Version anzeigen »

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.

Styling

Todo

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.

BegriffBeschreibung
Cart(-Entity)

Ist eine Entität, die sich im Bestellprozess befindet.
Das kann ein shopSessionArticle sein, der entweder im Warenkorb oder auf der Merkliste liegt.
Oder aber auch eine Entität, die nichts mit der ShopSession zu tun hat. Zum Beispiel ein Paketeintrag welcher nur auf shopSessionArticle verweist.

CartSessionArticle

Ist eine konkrete Art einer Cart-Entity. CartSessionArticle ist eine Cart-Entity, welche shopSessionArticle im Bestellprozess, Warenkorb und Merkliste verwaltet.
Siehe auch CartSessionArticle.

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

Warenkorb

Diese Events arbeiten mit dem \Brandbox\ShopCore\View\Basket\lib\Struct\BasketContextAbstract und den \Brandbox\ShopCore\Shop\Checkout\lib\Struct\CartEntityInterface-Entities.

Der Kontext \Brandbox\ShopCore\View\Basket\lib\Struct\BasketContextBasket beschreibt den Warenkorb auf der Warenkorbseite und \Brandbox\ShopCore\View\Basket\lib\Struct\BasketContextConfirmation beschreibt den Warenkorb in der Bestätigungsansicht im Bestellprozess.

OnPopulateBasket

Haupt-EventEventBeschreibung

\Brandbox\ShopCore\View\Basket\lib\event\OnPopulateBasketHaupt-Event des Warenkorbs. In der Standardimplementation werden über die folgenden Unter-Events der Aufbau der Warenkorbansicht definiert.
OnPopulateBasket\Brandbox\ShopCore\View\Basket\lib\event\OnPopulateBasketToolbarAdditionalToolbar über der Auflistung der Warenkorbartikel
OnPopulateBasket\Brandbox\ShopCore\View\Basket\lib\event\OnPopulateBasketItemsAuflistung der Warenkorbartikel. Für Details siehe separate Beschreibung.
OnPopulateBasket\Brandbox\ShopCore\View\Basket\lib\event\OnPopulateBasketSummaryFür zusammenfassende Inhalte im Warenkorb oder komplexere Aktionen, welche sich auf den gesamten Warenkorb beziehen statt auf konkrete Artikel. In der Standardimplementation wird hier die Preiszusammenfassung und durch shop-voucher die Gutscheinaktionen hinzugefügt.
OnPopulateBasket\Brandbox\ShopCore\View\Basket\lib\event\OnPopulateBasketToolbarToolbar für die Hauptaktionen der Warenkorbansicht. In der Standardimplementation werden hier "Weiter einkaufen" und "Bestellung abschließen" hinzugefügt.
OnPopulateBasket\Brandbox\ShopCore\View\Basket\lib\event\OnPopulateBasketMessagesHier können Hinweise für den Warenkorb dargestellt werden. Aktuell gibt es noch keine Standardimplementation, aber hier könnte zum Beispiel ein Hinweis stehen, dass sich der Warenkorb seit dem letzten Besuch geändert hat.
OnPopulateBasket\Brandbox\ShopCore\View\Basket\lib\event\OnPopulateBasketEmptyWird dargestellt, wen keine $entities vorhanden sind. Für Details siehe separate Beschreibung.

OnPopulateBasketItems

Haupt-EventEventBeschreibung

\Brandbox\ShopCore\View\Basket\lib\event\OnPopulateBasketItemsAuflistung der Warenkorbartikel. In der Standardimplementation wird hier für jeden Eintrag OnPopulateBasketItem aufgerufen und nach jedem Eintrag ein shop-basket-divider Element platziert.
OnPopulateBasketItems\Brandbox\ShopCore\View\Basket\lib\event\OnPopulateBasketItemImageBild des Artikels. In der Standardimplementation wird hier ein shop-basket-image Element gebaut und hinzugefügt.
OnPopulateBasketItems\Brandbox\ShopCore\View\Basket\lib\event\OnPopulateBasketItemContentInformationen über den Artikel. In der Standardimplementation greift hier CartSessionArticle ein und reichert Inhalt aus dem shopSessionArticle an.
OnPopulateBasketItems\Brandbox\ShopCore\View\Basket\lib\event\OnPopulateBasketItemActionsBereich für Aktionen an konkreten Warenkorbartikeln. In der Standardimplementation wird hier OnPopulateBasketItemActionsToolbar ausgeführt. Für Details siehe separate Beschreibung.
OnPopulateBasketItems\Brandbox\ShopCore\View\Basket\lib\event\OnPopulateBasketItemMessagesHier können Hinweise zu konkreten Warenkorbartikel hinzugefügt werden. In der Standardimplementation werden zum Beispiel Hinweise für eine nicht ausreichende Menge hinzugefügt.

OnPopulateBasketItemActions

Haupt-EventEventBeschreibung

\Brandbox\ShopCore\View\Basket\lib\event\OnPopulateBasketItemActions

Bereich für Aktionen an konkreten Warenkorbartikeln.
In der Standardimplementation wird hier eine Toolbar hinzugefügt.

OnPopulateBasketItemActions\Brandbox\ShopCore\View\Basket\lib\event\OnPopulateBasketItemActionsToolbarToolbar für Aktionen am Artikel. In der Standardimplementation werden hier Aktionen wie "Auf die Merkliste" oder "Entfernen" hinzugefügt.

OnPopulateBaskeEmpty

Haupt-EventEventBeschreibung

\Brandbox\ShopCore\View\Basket\lib\event\OnPopulateBasketEmpty

Wird dargestellt, wen keine $entities vorhanden sind. Für Details siehe separate Beschreibung.
In der Standardimplementation wird hier ein Hinweistext und eine Toolbar hinzugefügt.

OnPopulateBasketEmpty\Brandbox\ShopCore\View\Basket\lib\event\OnPopulateBasketEmptyToolbarToolbar für die Hauptaktionen der Warenkorbansicht im leeren Zustand. In der Standardimplementation werden hier "Weiter einkaufen" hinzugefügt.

Merkliste

Analog zu Warenkorb, mit der Ausnahme der Benennung.

Wichtige Einstiegspunkte

EinstiegspunktBeschreibung
\Brandbox\ShopCore\Shop\Checkout\Manager::getCartEntitiesLiefert 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::getSubscribedEventsAuflistung der Hauptevents der Standardimplementation des Warenkorbs
\Brandbox\ShopCore\View\Wishlist\lib\Subscriber\ViewWishlistSubscriber::getSubscribedEventsAuflistung 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.
Siehe auch CartSessionArticle.
  • Keine Stichwörter