Warenkorb abbrechen und zurück zur Artikelansicht

Hallo zusammen,

ich suche eine Möglichkeit den Warenkorb abzubrechen (alle Artikel zu löschen) und den User anschliessend zur Artikelansicht zurück zu bringen.

Bin über jeden Lösungsansatz glücklich…

Gruß axel

die Klasse oxBasket hat die Funktion deleteBasket(), auf diese kannst du zurückgreifen und dann anschließend den Benutzer z.B. mit einem php header() auf die Produktseite weiterleiten

da der Shop nur jeweils einen Artikel im Warenkorb haben soll, hab ich es in backtoshop() integriert…

…jetzt wird der Warenkorb geleert wenn man zurück zur Auswahl geht und man kann eine neue Auswahl treffen…

Vielen Dank für die Hilfe :wink:

Hallo noch mal…

ein Button “Bestellung abbrechen” ist schön und gut… leider stellt sich jedoch die Frage was passiert, wenn der User nicht auf “Bestellung abbrechen” klickt, sondern einfach im Browser zurück geht!

Folglich füllt sich der Warenkorb mit mehr als einem Artikel…

Da der Warenkorb aber pro Bestellung nur einen Artikel enthalten soll, müsste der Warenkorb vor dem hinzufügen eines Artikels gelöscht werden.

[B]Nun zu meiner Frage…
Wie ist der Lösungsansatz um den Warenkorb zu löschen bevor ein neuer/anderer Artikel hinzugefügt wird?[/B]

…wenn ich deleteBasket() auf addtobasket() anwende bleibt der Warenkorb leer! Muss der Warenkorb noch initialisiert werden bevor neue Artikel hinzugefügt werden können? Gibt es generell eine bessere Lösung im Warenkorb nur einen Artikel zu erlauben?

Gruß axel

deleteBasket() löscht den Warenkorb, aber mit changebasket() kannst du bestimmte Artikel aus dem Warenkorb entfernen. Schau mal in der Doku vorbei, um mehr über diese Funktionen zu erfahren: http://docu.oxid-esales.com/CE/sourcecodedocumentation/4.6.5.49955/

ohne jetzt im Code gewühlt zu haben, würde ich irgendeine Funktion suchen, die definitiv vom/im Warenkorb aufgeführt wird, und dort ansetzen.
Möglich wären bereits erwähnte addToBasket() oder auch irgendwas mit der Preisberechnung

Ich bin auf folgende Idee gekommen:

Wird ein Artikel hinzugefügt, wird der User sofort zum Warenkorb weitergeleitet. Im Warenkorb wird durch


Css3Menu.tpl

[{if $oView->getIsOrderStep()}]
[{else}]
<---- MENU ---->
[{/if}]

kein Munü angezeigt. Geht der User einen Schritt zurück, wird das Menü angezeigt. Wenn ich nun per Smarty deletebasket() aufrufen könnte, ist der Warenkorb immer leer sobald das Menü angezeigt wird und es ist sichergestellt das nur ein Artikel im Warenkorb landet.

[B]Doch wie kann ich die Funktion deletebasket() per smarty ausführen?[/B]

im Prinzip genau so wie in der PHP Klasse: du suchst dir das oxBasket Objekt und … das wars auch schon.
Aber warum willst du es im Template unterbringen und nicht in PHP?

Die Shop Funktionalität sollte in der Objekt Klasse sein und nicht im Template, weil Templates viel fehleranfälliger sind. Da kann es ein Modul geben, das deine Stelle im Template überschreibt, oder das Template wird beim Shop Update überschrieben und schon ist die Funktion weg.

Weil es A: keines der standard Templates ist und B: alle mal schon stark abgeändert ist und bei updates gesondert behandelt werden muss!

hab es mit smarty gelöst…

Danke wieder einmal…