Heute mal kein Problem aus einem Kundenshop, sondern vielmehr Gedanken zu einem eigenen SW6 Shop. Hintergrund ist der, dass ich bereits einen SW5 habe und dort einen eigenen Konfigurator habe. Nach und nach mache ich mir natürlich auch Gedanken bezüglich Migration zu SW6 (mein Lieblingsthema, da kann nix schief gehen).
Nun ist es allerdings so, dass ich für mein Vorhaben in SW6 über einen Frontend Controller Pseudoartikel erzeugen muss, die dann in den Warenkorb gelegt werden sollen. Hier muss ich gestehen, dass ich absolut überhaupt kein Plan habe wie ich das umsetzen könnte.
Ich weiß wie ich bestehende Artikel in den Warenkorb legen kann, aber eben nicht Artikel die es im Bestand gar nicht gibt. Wo ich also keine UUID zum Artikel habe.
Wenn irgendwer irgendwelche Tipps hat welche mich zum Ziel führen, würde das mein Herz erfreuen
naja „rausfliegen“ wird das Item nicht, aber der Warenkorb weiß nicht wie das Custom-Item angezeigt werden soll ! sprich es braucht ein Template. Mittlerweile muss dafür nur eine Stelle angepasst werden.
ABER nach meiner leidigen Erfahrung hat ein CustomItem den Nachteil, dass sich dieses nicht zur „Zusammenarbeit“ mit anderen Plugins bewegen lässt. Alle Plugin, die in den Warenkorb „schauen“ (Processor oder Collector) und dann nach PRODUCT_ITEMs filtern funktionieren nicht mehr (Rabatte, Zuschläge, Versandkosten-Berechnung, etc.).
Mein Weg war dann, den „Type“ in einem CustomField zu speichern. Im Item bleibt das aber ein Product.
Nein, jedes custom line item (mit einem eigenen typ) ohne processor wird aus dem cart gelöscht. Oder noch technischer erklärt: jedes custom line item ohne processor wird vom cart nicht in den calculated cart übernommen.
Beschäftigt euch doch mit dem Beispiel aus der Doku. Das sollte eigentlich einwandfrei funktionieren. Bei konkreten Fragen könnt ihr diese natürlich gerne hier stellen.
Oder: schaut euch eines der 2.000 Plugins im Store an, die eigene custom line items verwenden. Die Plugins sind ja alle quelloffen.
Ja klar, ich buche jetzt 100 Plugins damit eins finde wo ich sehen kann wie das funktioniert. Sorry, aber das ist eine blöde Idee und nicht wenig hilfreich.
Das war ja nur eine Empfehlung, wenn dir die Doku nicht ausreicht. Mir persönlich hilft es immer wenn ich mir Software von Dritten anschaue, die meine oder ähnliche Probleme lösen. Und es gibt nun mal zahlreiche Plugins - konfiguratoren, Bundes, pseudo Produkte, Optionen etc. - die custom line Items verwenden und die Probleme, vor denen du gerade stehst, bereits gelöst haben.
Nun ja, die Sache ist so dass ich ich im Vorfeld nicht korrekt erkennnen kann wie ob in dem Plugin auch wirklich Pseudo-Produkte in den Warenkorb gelegt werden. In einem Plugin XYZ heißt es auch, dass man Pseudo-Produkte anlegen kann, sind aber in wirklichkeit Produkte die nur im Listing etc… nicht auftauchen und werden im Backend fest definiert. Das geht alles an dem vorbei was ich gern umsetzen möchte.
Natürlich habe ich mir schon etliche Beispiele angesehen, aber sie alle basieren auf echte Produkte die in den Warenkorb legt werden. Und bei den hier verlinkten Beispielen passiert einfach nichts. Vielleicht sind die auch gar nicht mehr aktuell.
Von daher dachte ich, dass sich jemand ggf. damit schon mal wirklich beschäftigt hat.
Nein, du wirst wahrscheinlich niemals DAS Plugin finden, das EXAKT deine Anforderungen für dich löst - aber sie können dazu dienen dir die Konzepte und Grundlagen zu vermitteln.
Für deinen aktuellen Versuch: du könntest dir jetzt z.B. einmal den ProductCartProcessor anschauen, um heraus zu finden wie die Prozesse im Warenkorb ablaufen und warum dein „Produkt“ wieder raus fliegt.
Das ist auch wieder ein vollkommen anderes Konzept. Du legst nicht über den cart service ein line item in den cart und schleifst es durch einen processor immer mit/durch, sondern du umgehst den cart komplett und fügst bei jedem Durchlauf des processors dein line item direkt in den calculated cart. Das kannst du z.B. bei fest definierten prozentualen Aufschlägen auf den Warenkorb machen - aber nicht, wenn du z.B. Eingaben akzeptieren möchtest (z.B. eine Option „+ Geschenkpapier“ auf der PDP). Außerdem führt das zu einem extrem „merkwürdigem“ Verhalten, wenn du eine Bestellung manuell in der Administration anpassen möchtest.
Der erste Eintrag mit einem echten Pseudo-Produkt hat nun geklappt
Allerdings darf ich dazu (nicht wie in der Beschreibung steht) LineItem::PRODUCT_LINE_ITEM_TYPE als Konstante benutzen, dass überschreibt mir sogar bestehende Produkte im Warenkorb. Ich musste eine eigene Konstante definieren, welche im Handler übereinstimmen muss. Und das war die Ursache warum nichts ging.
In meinem Falle muss ich mit ‚CUSTOM_LINE_ITEM_TYPE‘ arbeiten. Damit werden beim Pseudo-Artikel im Warenkorb auch Versandkosten angezeigt und der Artikel ist Bestellbar
Jetzt muss ich noch knobeln, wie ich eine Pseudo-Produktnummer mit übergebe.