> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aftersell.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Den Drawer aus einem Page Builder öffnen

> Ein Cart-SDK-Anwendungsfall, damit Add-to-Cart-Buttons von Replo, PageFly, GemPages und eigene Buttons den Aftersell Cart Drawer öffnen.

Aftersell fängt Add-to-Cart auf standardmäßigen Shopify-Produktformularen ab. Landingpage-Builder legen Artikel oft auf ihre eigene Weise in den Warenkorb, per JavaScript-Aufruf statt Formular-Submit — der Artikel landet zwar im Warenkorb, aber der Drawer bleibt zu, oder Käufer werden zu `/cart` weitergeleitet.

<div id="the-fix-in-one-line">
  ## Die Lösung in einer Zeile
</div>

Nachdem das Add-to-Cart des Builders abgeschlossen ist, weise den Warenkorb an, neu zu laden und sich zu öffnen:

```js theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
window.aftersell.cart.actions.refresh().then(() => {
  window.aftersell.cart.actions.open();
});
```

Füge das als **zweite Aktion** am Button hinzu, nach dem builder-eigenen „Add to cart“, und deaktiviere die Option „Go to cart“ bzw. „Redirect after add“ des Builders.

<Note>
  Probiere zuerst [`open_on_background_add`](#the-no-code-option-first), denn das löst das Problem oft, ohne den Button überhaupt anzufassen.
</Note>

<div id="the-no-code-option-first">
  ## Zuerst die No-Code-Option
</div>

Aftersell erkennt Hinzufügungen, die es nicht selbst verarbeitet hat, auf zwei Wegen. Beide laufen jederzeit — sie werden beim Start gemeinsam eingerichtet und keiner unterdrückt den anderen, sodass eine Hinzufügung von beiden gemeldet werden kann — und jede Meldung wendet die Öffnungsregel unabhängig an:

* **Auf Netzwerkebene.** Aftersell beobachtet Anfragen an Shopifys Warenkorb-Endpunkte. Folgte die Hinzufügung innerhalb von etwa drei Sekunden auf einen echten Klick oder Tastendruck, gilt sie als vom Käufer ausgelöst, und der Drawer öffnet sich gemäß deiner normalen Einstellung **Open cart when an item is added**. Jeder Builder, der über Shopifys Ajax Cart API (`/cart/add.js`) hinzufügt, landet hier — das ist der häufigste Fall. Probiere deinen Button also zuerst aus, er funktioniert möglicherweise schon ganz ohne Änderungen.
* **[Shopifys Standard-Warenkorb-Events](https://shopify.dev/docs/storefronts/themes/best-practices/standard-events).** Eine so gemeldete Hinzufügung wird immer als *Hintergrund*-Hinzufügung behandelt, egal ob ein Käufer geklickt hat oder nicht. Hintergrund-Hinzufügungen öffnen den Drawer nur, wenn du das aktivierst:

```js theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
window.aftersell.cart.configure({ open_on_background_add: true });
```

Füge das unter **Cart settings → Custom script → Initialization** ein. Öffnet sich der Drawer jetzt nach dem Add-Button deines Builders, bist du fertig — ohne Arbeit pro Button, und es deckt jede Seite ab.

<Note>
  `open_on_background_add` deckt auch Hinzufügungen ganz ohne Käufer-Interaktion ab — etwa wenn eine andere App oder ein anderes Skript in den Warenkorb schreibt. Aktiviere es nur, wenn auch diese den Drawer öffnen sollen.
</Note>

Öffnet keiner der beiden Wege den Drawer, greife auf den expliziten Aufruf unten zurück.

<div id="per-builder-setup">
  ## Einrichtung je Builder
</div>

<div id="replo">
  ### Replo
</div>

1. Öffne deine Seite im Replo-Editor und wähle den Button **Add to Cart** aus.

2. Öffne in der rechten Seitenleiste den Tab **Interactions**.

3. Klicke unter **On Click** auf `+` und wähle **Run JavaScript**.

4. Füge Folgendes ein:

   ```js theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
   window.aftersell.cart.actions.refresh().then(() => {
     window.aftersell.cart.actions.open();
   });
   ```

5. Wähle erneut die Interaktion **Add Product to Cart** aus und schalte **Go to cart after?** aus.

6. Sieh dir die Vorschau an, bestätige, dass sich der Drawer öffnet, und veröffentliche dann.

Wiederhole das auf jeder Seite, die einen Add-to-Cart-Button hat.

<div id="pagefly-and-gempages">
  ### PageFly und GemPages
</div>

Beide erlauben es, eigenes JavaScript an einen Button-Klick zu hängen oder ein Custom-Code-Element zur Seite hinzuzufügen. Verwende denselben Snippet, so verdrahtet, dass er nach der Add-to-Cart-Aktion des Builders läuft, und deaktiviere jede „Redirect to cart“-Einstellung am Button.

<div id="your-own-button">
  ### Dein eigener Button
</div>

Wenn du selbst zum Warenkorb hinzufügst, spare dir den Umweg und nutze die eigene Aktion des SDK, die den Warenkorb aktualisiert und den Drawer in einem Schritt öffnen kann:

```js theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
document.querySelector('#my-add-button').addEventListener('click', () => {
  window.aftersell.cart.actions.addItem(VARIANT_ID, 1).then(() => {
    window.aftersell.cart.actions.open();
  });
});
```

Verwende `refresh()` nur, wenn etwas *anderes* den Warenkorb geändert hat und Aftersell aufholen muss:

```js theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
fetch('/cart/add.js', { method: 'POST', /* … */ })
  .then(() => window.aftersell.cart.actions.refresh())
  .then(() => { window.aftersell.cart.actions.open(); });
```

<div id="when-the-builders-button-should-bypass-aftersell-entirely">
  ## Wenn der Builder-Button Aftersell komplett umgehen soll
</div>

Manchmal ist das Gegenteil der Fall: Ein Formular braucht seinen eigenen Ablauf, und Aftersells Abfangen steht im Weg. Nimm nur dieses Formular aus:

```js theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
window.aftersell.cart.hooks.registerSkipAddToCartRule((form) =>
  form.hasAttribute('data-skip-aftersell')
);
```

Füge dann `data-skip-aftersell` zum Formular hinzu. Das ist besser als [`skip_add_to_cart_interceptor`](/de/aftersell/cart/sdk-configure#skip_add_to_cart_interceptor), das das Abfangen für jedes Formular auf der Seite deaktiviert.

Noch einfacher, wenn du das Markup des Formulars bearbeiten kannst: Füge dem `<form>` die Klasse **`aftersell-cart-skip-atc`** hinzu, und Aftersell überspringt es — ganz ohne Skript.

```html theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
<form action="/cart/add" method="post" class="aftersell-cart-skip-atc">
```

<div id="troubleshooting">
  ## Fehlerbehebung
</div>

| Symptom                                               | Wahrscheinliche Ursache                                                                                                                                                                                                         |
| ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Artikel hinzugefügt, Drawer bleibt zu                 | Der Builder sendet Shopifys Standard-Warenkorb-Events nicht. Verwende den expliziten Aufruf `refresh()` + `open()`.                                                                                                             |
| Käufer wird zu `/cart` weitergeleitet                 | Die Option „Go to cart after add“ des Builders ist noch aktiv. Schalte sie aus.                                                                                                                                                 |
| Drawer öffnet sich, zeigt aber veraltete Inhalte      | `open()` lief, bevor `refresh()` abgeschlossen war. Verkette sie wie oben mit `.then()`.                                                                                                                                        |
| Es passiert gar nichts                                | Aktionen, die vor dem Laden des Warenkorbs aufgerufen werden, geben eine Warnung in der Konsole aus und tun nichts. Umschließe sie mit `window.aftersell.cart.ready().then(…)`, wenn der Button so früh angeklickt werden kann. |
| Funktioniert auf einer Seite, auf einer anderen nicht | Die meisten Builder wenden Interaktionen pro Seite an. Wiederhole die Einrichtung auf jeder Seite.                                                                                                                              |

Prüfe [`window.aftersellCartDebugEvents`](/de/aftersell/cart/sdk-overview#debugging), wenn ein Aufruf scheinbar nichts bewirkt, denn SDK-Fehler werden verschluckt statt geworfen.

<div id="where-to-go-next">
  ## Nächste Schritte
</div>

* **[Configure](/de/aftersell/cart/sdk-configure#open_on_background_add)**: `open_on_background_add` und die anderen Drawer-Optionen.
* **[Actions](/de/aftersell/cart/sdk-actions)**: `refresh`, `open` und `addItem`.
* **[Hooks](/de/aftersell/cart/sdk-hooks#registerskipaddtocartrule)**: ein einzelnes Formular ausnehmen.
