Ich versuche eine gute Lösung zu finden, um benutzerdefiniertes Javascript auszuführen, wenn das Produkt erfolgreich in den Warenkorb gelegt wurde. Auch diese kundenspezifische Javascript Notwendigkeit , Informationen über Produkt , das dem Warenkorb aufgenommen ( sku
, qty
, price
, name
, etc.)
Derzeit habe ich folgende Möglichkeiten, um Informationen zu Produkten zu erhalten, die dem Warenkorb hinzugefügt wurden:
- Umschreiben
$.mage.catalogAddToCart.prototype.enableAddToCartButton
(für Produkte, die aus dem Katalog oder der Produktansicht in den Warenkorb gelegt wurden) - Umschreiben
$.mage.dataPost.prototype.postData
(für Produkte, die über Widgets in den Warenkorb gelegt wurden)
Um die notwendigen Informationen zu erhalten, muss ich die Seite analysieren (z. qty
B. um sku
sie zu erhalten ) und zusätzliche Informationen auf die Seite ausgeben (z. B. um sie zu erhalten product id
).
Jedoch meine Lösung:
- hat zwei Einstiegspunkte
- sieht nicht gut aus
- Behandelt keine Situation, in der die Validierung im Backend fehlgeschlagen ist
- bietet mir nicht alle erforderlichen Informationen bequem an
Leider konnte ich keinen geeigneten Erweiterungspunkt für den Checkout-Minicart finden, um mein Problem zu lösen.
Anregungen sind sehr willkommen!
quelle
Antworten:
Eine Lösung besteht darin, ein Mixin für die Funktion catalogAddToCart ajaxSubmit zu schreiben. Normalerweise sind die von Ihnen benötigten Daten hier nicht verfügbar. Dies kann jedoch durch Ändern des Checkout / Cart / Add-Controllers behoben werden, um die Daten zurückzugeben. Vollständige Lösung unten, derzeit werden nur die Daten angezeigt, die Sie für den Erfolg des Warenkorbs benötigen.
app / code / VendorName / ModuleName / registration.php
app / code / VendorName / ModuleName / etc / module.xml
app / code / VendorName / ModuleName / etc / frontend / di.xml
app / code / VendorName / ModuleName / Controller / Cart / Add.php
app / code / VendorName / ModuleName / view / frontend / requirejs-config.js
app / code / VendorName / ModuleName / view / frontend / web / js / catalog-add-to-cart-mixin.js
quelle
Wenn etwas zum Warenkorb hinzugefügt wird, werden die lokalen Speicherinformationen aktualisiert und Sie können einen Knockout abonnieren, der im
cart
Abschnitt der Kundendaten zu beobachten ist, um benachrichtigt zu werden, wenn sich der Inhalt ändert.Hier ist ein Beispiel:
quelle