Warenkorb Produkte mit einander verknüpfen

Hallo zusammen,

das ist mein erster Eintrag und auch meine ersten Monate mit OXID.
Ich habe die Herausforderung, dass ich zwei Artikel beim Hinzufügen in den Warenkorb mit einander “verknüpfen” möchte.

In der Tabelle oxuserbasketitems habe ich eine extra Spalte hinzugefügt, die diese Verknüpfung zwischen den beiden BasketItems darstellen soll.

Leider weiß ich nicht wie ich diesen Wert korrekt speichern kann. Wo muss ich ansetzen um auch die extra Spalte mit oxid Mitteln zu persistieren?

Vielen Dank für eure Hilfe.

1 Like

Unter Artikel / Erweitert gibt’s die Funktion “Artikel dazu”. Hilft Dir das weiter?

Danke für deinen Hinweis :slight_smile:

Ich glaube das hilft nicht, da der Benutzer individuell aussuchen können muss ob er den Artikel haben möchte. Wenn er ihn aussucht dann muss er zu dem Artikel passen der als Hauptartikel reingelegt wird.

Bsp. Kunde möchte Artikel A haben, betätigt den Button, es kommt ein extra Fenster mit der Frage ob er eine Dienstleistung zu diesem Artikel beanspruchen will (Artikel B). Wenn ja dann wird der Artikel als Item hineingelegt ABER dieser muss einen Verweis auf Artikel A haben und behalten.

Beste Grüße.

OK, es gibt mehrere Module. Wenn Du es selbst machen willst, musst eine Verknüpfung (ID) erzeugen, die Du z.B. über persparam (bitte Suche benutzen) beim Absenden des Formulars “in den Warenkorb” “mitnehmen” und letztlich in die oxuserbasketitems für alle verknüpften Artikel schreiben kannst.

Wichtig dabei ist, dass beim Einloggen der Warenkorb in die Session geladen wird und beim Ausloggen wieder aktualisiert in die oxuserbasketitems geschrieben wird, Hier musst die Methoden erweitern, um auf die Verknüpfung zugreifen zu können, denn beim Löschen des Hauptartikels sollen ja auch wieder alle verknüpften Artikel verschwinden.

1 Like

Hey @rubbercut ,

vielen Dank für den Hinweis. Vorallem das mit dem wieder einloggen und aufrufen des Baskets. Dass mit den persparam hatte ich gestern abend Tatsache in Betracht gezogen und umgesetzt. Das widerum erpart mir extra Spalten.

Vielen Dank!

Hey @rubbercut

vielleicht hast du eine Idee. Ich trage die Daten in oxpersparam in oxuserbasketitems ein. Wenn man das alles in einem Wisch macht, dann funktioniert es auch da ich es zusätzlich in die Session schreibe.

Wenn ich mich jedoch auslogge und wieder einlogge, ist die Session natürlich leer und es soll aus der Datenbank geholt werden. Leider passiert das nicht. Ich habe nachgeforscht und gesehen, dass schon getItems mit der DB diesen Wert nicht ausliest. (source/Core/Model/ListModel.php:372)

Weißt du woran das liegen kann?
Die Daten werden ja serialisiert in die DB geschrieben und eigentlich sollten sie so auch wieder ausgelesen werden (können).

Beste Grüße und vielen Dank im voraus.

Basket::load() → addtobasket() → UserBasket::_createItem(…)
sollte ungefähr der Weg sein, auf dem die Felder “mitgenommen” werden müssen.

1 Like

@rubbercut Vielen Dank. Das hilft mir weiter !

Gerne. Kannst Deine Lösung ja mal zeigen. Ist bestimmt interessant für die 5, die OXID noch nutzen.

1 Like

Wie kommst du denn auf die Zahl? :face_with_raised_eyebrow:

Ich habe auch mit mir gehadert und fand 5 schon viel zu viel. Eher 3 :upside_down_face:
Spaß beiseite. Schau Dich um.

Mir scheint mit der 5 lagst du näher. Also wenn du noch drei nullen anhängst: