Artikel individualisieren und im Warenkorb unterscheiden

Hallo Community,

ich habe ein Problem bei dem ihr mir hoffentlich weiterhelfen könnt.
Ich werde erstmal kurz den momentanen Stand beschreiben damit ihr euch einen Überblick bilden könnt.

Die im Shop angebotenen Artikel sollen über ein extra gestaltetes Popup eine Individualiesierung erhalten, wie zum Beipsiel Farbe, Breite, Höhe, etc.

Die zusätzlichen Eigenschaften werden in PersParam gespeichert, dem Warenkorb übergeben und in der Übersicht des Warenkorb mit ausgegeben. Soweit alles in Ordnung und keine Probleme…

Beispiel für einen Warenkorb

1x Artikel A (ProductID 123 / WarenkorbID 777)
Rot, 1.20m, lackiert
3x Artikel A (ProductID 123 / WarenkorbID 778)
Blau, 1.80m, lackiert
2x Artikel B (ProductID 124 / WarenkorbID 779)
Lila, 3.80m, nicht lackiert

Nun möchte ich im Warenkorb zum Beispiel die Anzahl eines bestimmten Artikels A ändern. Trage die neue Zahl ein und drücke auf “aktualisieren”.

Was passiert nun im Hintergrund

Der Warenkorb erstellt einen neuen Artikel mit der Produkt-ID von Artikel A(=123), ruft die addtobasket()-Funktion für einen neuen Artikel auf, die den Artikel in den Warenkorb packt.
Nun wird allerdings noch die addtobasket()-Funktion zum update des Warenkorbs aufgerufen, die alle anderen Artikel mit der gleichen ProduktID aus dem Warenkorb entfernt. Leider auch die anders individualisierten Artikel mit der gleichen Produkt-ID. Somit gehen alle individualisierten Artikel verloren.

Diese Funktionalität ist super, keine Frage, aber für mich halt nicht :slight_smile:

Ich hab nun versucht die Produkt-ID zu erweitern wenn der Artikel in den Warenkorb gelegt wird, um somit die update-Problematik zu umgehen…
Aber dann ist das System leider(für mich zumindest) so schlau wirft eine Exception, die besagt “dieser Artikel ist nicht mehr verfügbar” und wird dann auch nicht in den Warenkorb gepackt.

Ich würde gerne die Abfrage ergänzen mit der Warenkorb-ID aber hab bisher nicht die Stelle gefunden wo diese Abfrage hinterlegt ist…

Hoffe ich habe meine Situation ausführlich beschrieben und ihr könnt mir vielleicht weiterhelfen.

Grus Ava

Das passiert, weil die Zusatzdaten bei Änderung des Warenkorbs nicht als $_POST weitergegeben werden. Dies kann man mit einem Hidden-Feld ausbügeln. :wink:

<input class=“textbox persParam” type=“hidden” name=“aproducts[[{ $basketindex }]][persparam][[{ $sVar }]]” value="[{ $aParam }]">

Hab ich als hidden-Feld hinterlegt, dies scheint auch nicht das Problem zu sein…

Was ich als Hauptproblem sehe, ist dass bei der Aktualisierung die update-Funktion alle Artikel mit der selben Product-ID aus dem Warenkorb entfernt. Da müsste als vergleich die Warenkorb-ID benutzt werden, damit es für meine Zwecke dienlich ist.

Kennt jemand die Stelle an der dieser Vergleich stattfindet?

Gruss Ava

Schau Dir das Hidden-Feld doch einmal genauer an.

In oxcmp_basket wird auf einen Persparam “details” geprüft, du kannst z.B. eine Zufallszahl generieren und in den Persparam “details” schreiben.