Variante im Warenkorb ändern für PrestaShop: Installation und Einrichtung
Variantenwechsel im Warenkorb installieren und einrichten: Anzeigemodi, Bestand, serverseitige Prüfungen, Verlauf und Theme-Integration.
Überblick
Mit dem Modul ändert der Kunde die Variante eines Produkts (Größe, Farbe oder ein anderes Attribut) direkt auf der Warenkorbseite, ohne die Zeile zu löschen. Die neue Variante übernimmt Menge, Lieferadresse und Position der Zeile. Bestand und Mindestmenge werden vor dem Wechsel vom Server geprüft.
Installation
- Klicken Sie unter Module > Modulverwaltung auf Modul hochladen und senden Sie die Datei
dfcartcombination-1.0.0.zip. - Das Modul registriert die Hooks
displayCartExtraProductActionsundactionFrontControllerSetMediaund legt die Tabelleps_dfcartcombination_logfür den Verlauf an. - Öffnen Sie die Modulkonfiguration. Alles ist standardmäßig aktiv, im Modus Schaltfläche mit Fenster.
- Legen Sie ein Produkt mit mindestens zwei Varianten in den Warenkorb und öffnen Sie die Warenkorbseite, um die Anzeige zu prüfen. Erscheint nichts, leeren Sie den Cache unter Erweiterte Einstellungen > Leistung.
Einstellungen
- Modul aktivieren: deaktiviert wird auf der Warenkorbseite nichts geladen.
- Anzeigemodus: Schaltfläche mit Auswahlfenster (ein Link „Ändern“ pro Zeile) oder Auswahllisten in der Warenkorbzeile (eine Liste pro Attributgruppe, Änderung sofort bei Auswahl).
- Unter den Produktattributen platzieren: verschiebt die Auswahl unter die Attribute der Zeile. Deaktivieren Sie es, um sie dort zu lassen, wo Ihr Theme den Hook aufruft, meist in der Aktionsspalte neben dem Papierkorb.
- Preis pro Variante anzeigen: Preis der gewählten Variante, durchgestrichener Preis bei Rabatt und Differenz zur aktuellen Zeile. Der Preis folgt der Brutto- oder Nettoanzeige der Kundengruppe.
- Lagerstatus anzeigen: Auf Lager, Nur noch X verfügbar, Auf Nachbestellung lieferbar oder Nicht vorrätig. „Nur noch X“ nutzt die in PrestaShop eingestellte Schwelle für Restmengen. Bei deaktivierter Lagerverwaltung wird nichts angezeigt.
- Variantenbild anzeigen: erstes Bild der Variante, sonst das Titelbild des Produkts.
- Nicht verfügbare Varianten: Ausgegraut anzeigen oder Ausblenden. Der Wert der aktuellen Zeile bleibt immer sichtbar.
- Ausgeschlossene Produkte: Produkt-IDs durch Kommas getrennt. Für diese Produkte erscheint keine Auswahl, und der Server lehnt jede Änderung ab.
- Akzentfarbe: Farbe der Hauptschaltfläche und der gewählten Werte.
- Änderungsverlauf aufzeichnen: speist die Statistiken unter dem Formular.
Kundenseite
Fenstermodus
Die Schaltfläche Ändern öffnet ein Fenster mit dem Variantenbild, dem Produktnamen und der Menge der Zeile. Die Attributgruppen folgen der Reihenfolge des Katalogs:
- Farbgruppen: Farbfelder, mit der Attributtextur, falls vorhanden;
- Radio- oder Listengruppen: Schaltflächen, ab mehr als 8 Werten eine Auswahlliste.
Unten werden Preis, Preisdifferenz und Lagerstatus der Auswahl bei jedem Klick aktualisiert. Die Schaltfläche Warenkorb aktualisieren bleibt inaktiv, solange die Auswahl der Zeile entspricht oder nicht verfügbar ist. Das Fenster schließt mit Escape, dem Kreuz oder einem Klick außerhalb und lässt sich per Tastatur bedienen (Pfeiltasten zwischen den Werten einer Gruppe). Auf dem Smartphone öffnet es sich vom unteren Bildschirmrand.
Listenmodus
Jede Attributgruppe wird zu einer Liste in der Zeile. Die Änderung wird gesendet, sobald ein Wert gewählt ist. Die Attributzeilen, die das Theme bereits zeigt (zum Beispiel „Größe: S“), werden ausgeblendet, damit nichts doppelt erscheint. Eine Meldung unter den Listen zeigt die laufende Aktualisierung oder einen Fehler.
Nicht vorhandene Kombination
Existiert der gewählte Wert nicht mit den übrigen gewählten Attributen (etwa M Blau fehlt im Katalog), wechselt das Modul zur vorhandenen Variante, die diesen Wert enthält und die meisten aktuellen Attribute behält, bevorzugt eine bestellbare.
Prüfungen vor dem Wechsel
Der Browser sendet das Produkt, die aktuelle und die gewählte Variante. Der Server prüft dann:
- das Sitzungs-Token;
- dass das Produkt aktiv und bestellbar ist und der Katalogmodus ausgeschaltet ist;
- dass die gewählte Variante zum Produkt und zum Shop gehört;
- dass die ursprüngliche Zeile noch im Warenkorb liegt, ohne Personalisierung;
- dass das Produkt nicht an eine Geschenk-Warenkorbregel des Warenkorbs gebunden ist;
- dass die Endmenge die Mindestmenge der Variante erreicht;
- dass der Bestand die Endmenge deckt, außer der Verkauf ohne Bestand ist für das Produkt erlaubt.
Die neue Variante wird mit der nativen Methode updateQty hinzugefügt, danach wird die alte mit deleteProduct entfernt. Scheitert das Entfernen, wird das Hinzufügen rückgängig gemacht. Liegt die gewählte Variante bereits im Warenkorb, werden die Mengen in einer Zeile addiert. Andernfalls übernimmt die neue Zeile das Hinzufügedatum der alten, damit sie ihren Platz im Warenkorb behält.
Nach dem Wechsel löst das Modul das PrestaShop-Ereignis updateCart aus. Das Theme lädt dann Liste, Summen und Mini-Warenkorb neu. Reagiert das Theme nicht innerhalb von 3 Sekunden, wird die Seite neu geladen.
Nicht betroffene Zeilen
- Produkte ohne Varianten oder mit nur einer Variante;
- Zeilen mit Personalisierung (Text, Datei);
- über eine Warenkorbregel geschenkte Produkte;
- in der Konfiguration ausgeschlossene Produkte.
Verlauf und Statistiken
Unter dem Konfigurationsformular zeigt der Block Änderungsverlauf:
- die Zahl der Änderungen und betroffenen Warenkörbe in 30 Tagen;
- die Zahl der geänderten Warenkörbe, die zu Bestellungen wurden, mit Quote;
- die 10 am häufigsten geänderten Produkte;
- die letzten 20 Änderungen mit Ausgangs- und gewählter Variante.
Die Schaltfläche Verlauf leeren löscht die Daten des aktuellen Shops. Ein Produkt, das oft zur nächstgrößeren Größe gewechselt wird, deutet auf eine Größentabelle oder Produktseite hin, die überarbeitet werden sollte.
Themes und Anpassung
Das Classic-Theme und die meisten davon abgeleiteten Themes rufen displayCartExtraProductActions in jeder Warenkorbzeile auf. Ruft Ihr Theme den Hook nicht auf, erzeugt das Skript die Auswahl anhand der Lösch-Links der Zeilen (data-id-product und data-id-product-attribute). Die JavaScript-Datei wird nur auf der Warenkorbseite geladen.
Um den Stil anzupassen, überschreiben Sie im CSS Ihres Themes die Variablen --dfcc-accent, --dfcc-text und --dfcc-border oder die Klassen .dfcc-edit, .dfcc-modal__dialog und .dfcc-option.
Testen Sie den Variantenwechsel bei einem stark angepassten Theme oder einem Seitenwarenkorb-Modul auf einer Kopie des Shops, als Gast und als angemeldeter Kunde.
Für Entwickler
Nach jedem erfolgreichen Wechsel führt das Modul den Hook actionDfCartCombinationChange mit den Parametern cart, id_product, id_product_attribute_from, id_product_attribute_to und quantity aus. Ein Drittmodul kann sich daran anhängen, um ein CRM oder ein Analysetool zu synchronisieren.
Bekannte Grenzen
- Personalisierte Zeilen behalten in Version 1.0.0 ihre Variante.
- Der Wechsel erfolgt auf der Warenkorbseite, nicht in der Zusammenfassung des Bestellvorgangs oder im Mini-Warenkorb.
- Ein Seitenwarenkorb-Modul, das das Ereignis
updateCartnicht nutzt, aktualisiert sich erst beim Neuladen der Seite.