Vieles, was Händler vom SDK verlangen, ist bereits eine Einstellung. Prüfe vor dem Schreiben eines Scripts, ob ein Cart-Block, Bedingungen nach Markt/Land/Währung oder eine Cart-Einstellung es bereits erledigt. Die funktionieren auch nach Cart-Redesigns weiter, dein Script möglicherweise nicht.
Der globale Einstiegspunkt
Jedes Snippet in diesen Docs schreibt
window.aftersell.cart vollständig aus, sodass jedes für sich funktioniert, wenn du es einfügst. Es einmal zu aliasen (const cart = window.aftersell.cart;) und ab dann cart zu verwenden ist ebenfalls völlig valide und sogar sicher, bevor der Warenkorb lädt. Denk nur daran, diese Zeile einzufügen, wenn du ein Snippet kürzt, denn ein nacktes cart allein wirft cart is not defined.Configure
Lege fest, wie sich der Warenkorb verhält: wann sich der Drawer öffnet, wie Geld formatiert wird, ob Aftersell Add-to-cart abfängt.
Events
Reagiere auf das, was passiert: der Warenkorb wurde geladen, ein Artikel hinzugefügt, der Drawer geöffnet, Checkout geklickt.
Actions
Lies und ändere den Warenkorb: öffne ihn, füge einen Artikel hinzu, aktualisiere eine Menge, lies den aktuellen Zustand.
Hooks
Ändere, wie der Warenkorb selbst funktioniert: Zeilen ausblenden oder umbenennen, neu ordnen, zusätzliche Daten anhängen, Add-to-cart steuern.
Wenn eines deiner Scripts beim Add-to-cart nicht mehr feuert, beginne bei Add-to-cart-Abfangen. Dort wird erklärt, warum Aftersell das Hinzufügen übernimmt, und jede Möglichkeit, ein Formular auszunehmen.
Events, Actions oder Hooks?
Die wichtigste Unterscheidung: Eine Action ändert den tatsächlichen Warenkorb des Käufers (und seine Gesamtsumme), während ein Hook nur ändert, was gerendert wird. Eine Zeile mit einem Hook auszublenden lässt sie im Warenkorb und in der Gesamtsumme; sie mit einer Action zu entfernen nimmt sie wirklich heraus.
Wie und wann es lädt
- Ein kleiner Stub erstellt
window.aftersell.cartsofort, sodass es immer da ist. - Das vollständige SDK lädt kurz danach und übernimmt, indem es den Stub an Ort und Stelle aufwertet — eine früher erfasste Referenz funktioniert also weiter.
Setup-Aufrufe: sofort sicher
configure(...), events.on(...) und jeder hooks.register*-Aufruf. Werden vor dem Boot gepuffert und in Reihenfolge abgespielt, sobald das SDK lädt. Setze sie an den Anfang deines Scripts.Actions: auf ready() warten
Alles unter
actions.*. Führe sie innerhalb von ready() oder einem Event-Handler aus. Zu früh aufgerufen warnen sie in der Konsole und tun nichts — sicher: Die asynchronen lösen trotzdem auf, sodass eine .then()-Kette nicht bricht.ready()
ready() gibt ein Promise zurück, das aufgelöst wird, sobald das erste Laden des Warenkorbs abgeschlossen ist. Es wird sowohl bei Fehlschlag als auch bei Erfolg aufgelöst, sodass ein Käufer mit wackliger Verbindung dein Script nie hängen lässt. Prüfe getCart() auf null, statt anzunehmen, dass ein Warenkorb angekommen ist.
Ein Aufruf von ready(), nachdem der Warenkorb bereits geladen ist, wird sofort aufgelöst — es ist also sicher, es überall in deinem Code als allgemeines „der Warenkorb existiert jetzt“-Gate zu verwenden.
context
window.aftersell.cart.context enthält vom Server gerenderte Käuferdaten, synchron lesbar, ohne dass ready() nötig ist. Verwende es für Markt- oder Länder-Verzweigungen, die passieren müssen, bevor der Warenkorb lädt.
Um unterschiedliche Block-Einstellungen nach Markt, Land oder Währung anzuzeigen, verwende stattdessen Bedingungen im Cart-Editor. Kein Script erforderlich. Die vollständige Conditions-UI gibt es heute bei Rewards.
shadowRoot
document.querySelector nichts im Drawer sehen kann. Um ein Element im Warenkorb zu erreichen, frage den Shadow Root ab:
cart-external-*-Klassen, die auch Custom CSS verwendet. Das sind die unterstützten Griffe. Die cart-internal-*-Zwillinge sind die interne Verkabelung des Warenkorbs, frage also stattdessen die externen ab.
Der Shadow Root ist erst da, wenn der Warenkorb gebootet hat — lies ihn also innerhalb von ready() oder einem Event-Handler statt am Anfang deines Scripts.
Debugging
Wenn dein Script wirft
configure, events.on und hooks.register* unterhalb dieser Zeile nie läuft. Der Warenkorb sagt das explizit:
aftersell-cart-init.js und aftersell-cart-cart-update.js in den DevTools. Du kannst sie im Sources-Panel öffnen und Breakpoints setzen wie in jeder anderen Datei.
Der Debug-Kanal
Nächste Schritte
Configure
Jede Option, mit je einem Beispiel.
Events
Jedes Event, wann es ausgelöst wird und was du in einem Handler nicht tun solltest.
Actions
Jede Action, mit je einem Snippet.
Hooks
Jeder Hook und wie sich Registrierungen kombinieren.
Cart-Objekt
Die Struktur des Warenkorbs und seiner Zeilen.
Use Cases
Vollständige, lauffähige Lösungen für häufige Anforderungen.