> ## 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.

# Konfiguracja

> Wszystkie opcje configure w Aftersell Cart SDK: otwieranie drawera, przechwytywanie add-to-cart, walidacja formularza i formatowanie kwot.

`configure(config)` ustawia sposób działania koszyka. To **wywołanie konfiguracyjne**, więc jest bezpieczne na samej górze Twojego skryptu, zanim koszyk się załaduje.

```js theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
window.aftersell.cart.configure({
  open_on_add_to_cart: 'always',
  money_format: '${{amount}} USD',
});
```

Możesz wywołać je więcej niż raz — wartości się scalają. Późniejsze wywołanie nadpisuje tylko klucze, które wymienia, pozostawiając resztę bez zmian.

<Warning>
  **Przekazanie `undefined` czyści klucz, zamiast go pomijać.** `configure({ open_on_add_to_cart: undefined })` resetuje tę opcję do wartości domyślnej, odrzucając to, co ustawiło wcześniejsze wywołanie. Aby zostawić opcję w spokoju, całkowicie pomiń klucz.
</Warning>

<div id="options">
  ## Opcje
</div>

| Opcja                                                           | Wartości                           | Domyślnie     | Cel                                                                          |
| --------------------------------------------------------------- | ---------------------------------- | ------------- | ---------------------------------------------------------------------------- |
| [`open_on_add_to_cart`](#open_on_add_to_cart)                   | `'always'`, `'never'`, `'default'` | `'default'`   | Czy drawer otwiera się po dodaniu produktu.                                  |
| [`open_on_background_add`](#open_on_background_add)             | `boolean`                          | `false`       | Otwieraj także, gdy coś *innego* dodaje do koszyka.                          |
| [`validate_form_on_add_to_cart`](#validate_form_on_add_to_cart) | `boolean`                          | `false`       | Zablokuj dodanie, jeśli formularz produktu jest nieprawidłowy.               |
| [`skip_add_to_cart_interceptor`](#skip_add_to_cart_interceptor) | `boolean`                          | `false`       | Całkowicie wyłącz przechwytywanie add-to-cart przez Aftersell.               |
| [`skip_open_cart_interceptor`](#skip_open_cart_interceptor)     | `boolean`                          | `false`       | Pozwól, aby kliknięcie ikony koszyka dotarło do Twoich pozostałych skryptów. |
| [`money_format`](#money_format)                                 | string                             | format sklepu | Nadpisz format używany przez `formatMoney`.                                  |

***

<div id="open_on_add_to_cart">
  ## open\_on\_add\_to\_cart
</div>

Kontroluje, czy drawer otwiera się, gdy klient dodaje produkt.

| Wartość     | Zachowanie                                                                     |
| ----------- | ------------------------------------------------------------------------------ |
| `'always'`  | Zawsze otwieraj drawer przy dodaniu.                                           |
| `'never'`   | Nigdy go nie otwieraj; produkt jest dodawany po cichu.                         |
| `'default'` | Podążaj za ustawieniem **Open cart when an item is added** w edytorze koszyka. |

```js theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
// Always open, regardless of the merchant's cart setting.
window.aftersell.cart.configure({ open_on_add_to_cart: 'always' });
```

Częstym zastosowaniem jest trzymanie drawera zamkniętego na jednej konkretnej stronie, pozostawiając ustawienie sprzedawcy nietknięte wszędzie indziej:

```js theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
if (window.location.pathname.startsWith('/collections/')) {
  window.aftersell.cart.configure({ open_on_add_to_cart: 'never' });
}
```

<Note>
  Jeśli po prostu chcesz to włączyć dla całego sklepu, to już jest ustawienie: **Cart settings → Content → Behavior → Open cart when an item is added**. Użyj `configure`, gdy odpowiedź zależy od strony, klienta lub czegoś, co zna tylko Twój kod.
</Note>

<div id="open_on_background_add">
  ## open\_on\_background\_add
</div>

Ustaw na `true`, aby otwierać drawer także przy dodaniach **w tle** — takich, które Aftersell wykrył, ale sam nie obsłużył.

Dodanie liczy się jako dodanie w tle, gdy:

* przyszło przez [standardowe zdarzenia koszyka Shopify](https://shopify.dev/docs/storefronts/themes/best-practices/standard-events) (zawsze traktowane jako tło, niezależnie od tego, co je wywołało), lub
* Aftersell zobaczył żądanie koszyka w sieci **bez** zaufanego kliknięcia lub naciśnięcia klawisza w poprzedzających \~3 sekundach — np. inna aplikacja lub skrypt zapisujący do koszyka.

Dodanie, które Aftersell zobaczył w sieci i które *nastąpiło* po kliknięciu klienta, nie jest dodaniem w tle: już otwiera drawer zgodnie z `open_on_add_to_cart`, bez potrzeby tej opcji.

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

To **dodatkowa bramka, a nie nadpisanie**: dodanie w tle otwiera drawer tylko wtedy, gdy `open_on_add_to_cart` również by na to pozwoliło. Przy `open_on_add_to_cart: 'never'` ta opcja nic nie robi.

<Tip>
  Sięgnij po to, gdy przycisk dodawania innej firmy poprawnie dodaje produkt, ale zostawia drawer zamknięty. Jeśli produkt w ogóle nie trafia do koszyka, to problem z przechwytywaniem. Zobacz [`skip_add_to_cart_interceptor`](#skip_add_to_cart_interceptor) i [przypadek użycia page buildera](/pl/aftersell/cart/sdk-use-case-page-builder).
</Tip>

<div id="validate_form_on_add_to_cart">
  ## validate\_form\_on\_add\_to\_cart
</div>

Uruchamia natywną walidację formularza przeglądarki (`reportValidity()`) przed dodaniem i anuluje dodanie, jeśli formularz jest nieprawidłowy. Użyj tego, gdy formularz produktu ma wymagane pola (tekst graweru, notatka do prezentu, wymagany checkbox), które klienci mogą obecnie pomijać.

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

Przeglądarka pokazuje własny komunikat walidacji przy problematycznym polu. Domyślnie wyłączone, ponieważ motyw z przypadkowym atrybutem `required` gdzieś w formularzu produktu zacząłby inaczej po cichu blokować add-to-cart.

<div id="skip_add_to_cart_interceptor">
  ## skip\_add\_to\_cart\_interceptor
</div>

Całkowicie wyłącza przechwytywanie add-to-cart przez Aftersell. Aby dowiedzieć się, co robi przechwytywanie i jakie są wszystkie sposoby, by z niego zrezygnować, zobacz [Przechwytywanie add-to-cart](/pl/aftersell/cart/add-to-cart-interception).

Motyw wykonuje wtedy dodanie samodzielnie, a każdy skrypt nasłuchujący na tym submicie znów się uruchamia. Aftersell nadal śledzi żądanie koszyka w sieci, więc drawer otwiera się jak zwykle. Rezygnując z przechwytywania, nie tracisz tego. Na motywach, które Aftersell rozpoznaje, jego własny koszyk pozostaje bezczynny, więc nie zobaczysz dwóch koszyków. Na motywie, którego Aftersell nie rozpoznaje, motyw może otworzyć swój koszyk obok Twojego; zobacz [Czy otworzy się też koszyk motywu?](/pl/aftersell/cart/add-to-cart-interception#will-the-themes-cart-open-too).

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

<Warning>
  Ta opcja jest odczytywana **raz, przy starcie**. Działa tylko z wywołania konfiguracyjnego uruchamianego przed załadowaniem koszyka: Twojego skryptu **Initialization**. Ustawienie jej później (wewnątrz `ready()` lub z handlera zdarzenia) nie ma efektu i zawodzi po cichu.
</Warning>

To tępe narzędzie, które wyłącza przechwytywanie dla każdego formularza na stronie. Aby wyłączyć tylko jeden formularz, użyj zamiast tego hooka [`registerSkipAddToCartRule`](/pl/aftersell/cart/sdk-hooks#registerskipaddtocartrule):

```js theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
// Preferred: exempt only the forms you own.
window.aftersell.cart.hooks.registerSkipAddToCartRule((form) =>
  form.hasAttribute('data-skip-aftersell')
);
```

<div id="skip_open_cart_interceptor">
  ## skip\_open\_cart\_interceptor
</div>

Kliknięcie ikony koszyka otwiera drawer Aftersell. Aby robić to niezawodnie, Aftersell zatrzymuje kliknięcie, żeby nic innego na stronie go nie obsłużyło. To sprawia jednak, że **Twoje** skrypty również go nie widzą. Jeśli zdarzenie analityki lub piksela odpala się wszędzie oprócz ikony koszyka, to właśnie z tego powodu.

Ustaw tę opcję na `true`, aby przestać wyciszać kliknięcie:

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

Twoi nasłuchujący uruchamiają się wtedy normalnie, a drawer nadal otwiera się dokładnie tak jak wcześniej. Kliknięcie nadal też nie prowadzi do `/cart`.

<Warning>
  **Ta opcja robi mniej, niż sugeruje jej nazwa.** Nie pomija interceptora ikony koszyka. Powstrzymuje go jedynie od wyciszania pozostałych nasłuchujących. Aftersell dalej obsługuje kliknięcie i dalej otwiera Twój koszyk. Aby Aftersell całkowicie zignorował dany element, użyj zamiast tego klasy `aftersell-cart-wont-open-cart`; zobacz [Przechwytywanie add-to-cart](/pl/aftersell/cart/add-to-cart-interception#the-cart-icon-is-separate).
</Warning>

W przeciwieństwie do [`skip_add_to_cart_interceptor`](#skip_add_to_cart_interceptor) ta opcja jest odczytywana **przy każdym kliknięciu**, więc możesz ją ustawić w dowolnym momencie i zadziała natychmiast: z `ready()`, z handlera zdarzenia lub warunkowo per strona.

<Note>
  Niektóre motywy również reagują na kliknięcie ikony koszyka samodzielnie. Gdy Aftersell przestanie je wyciszać, motyw, który otwiera własny drawer, zrobi to obok Twojego. Jeśli po włączeniu tej opcji widzisz dwa koszyki, dodaj klasę `aftersell-cart-wont-open-cart` do ikony motywu i otwieraj koszyk z własnego handlera przy pomocy [`actions.open()`](/pl/aftersell/cart/sdk-actions#open-and-close).
</Note>

<div id="money_format">
  ## money\_format
</div>

Nadpisuje [format walutowy Shopify](https://shopify.dev/docs/api/liquid/filters/money) używany przez [`formatMoney`](/pl/aftersell/cart/sdk-actions#formatmoneycents). Domyślnie to format Twojego sklepu; jeśli jest niedostępny, ceny wracają do `$X.XX`.

```js theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
window.aftersell.cart.configure({ money_format: '${{amount}} USD' });

// Later:
window.aftersell.cart.actions.formatMoney(5779); // "$57.79 USD"
```

Ponieważ `configure` scala wartości, a `formatMoney` odczytuje bieżącą wartość, możesz zmieniać format w czasie działania, np. gdy zadziała przełącznik waluty:

```js theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
window.myTheme.onCurrencyChange((currency) => {
  window.aftersell.cart.configure({ money_format: FORMATS[currency] });
  window.aftersell.cart.actions.visualRefresh(); // repaint prices already on screen
});
```

<Note>
  To zmienia sposób, w jaki SDK i koszyk *wyświetlają* ceny. Nie zmienia waluty, w której klient jest obciążany; za to odpowiada Shopify Markets.
</Note>

<div id="where-to-go-next">
  ## Co dalej
</div>

* **[Akcje](/pl/aftersell/cart/sdk-actions)**: odczytuj i zmieniaj koszyk.
* **[Hooki](/pl/aftersell/cart/sdk-hooks)**: kontrola per formularz i per pozycja, gdy `configure` jest zbyt szerokie.
* **[Przypadki użycia](/pl/aftersell/cart/sdk-use-cases)**: kompletne rozwiązania typowych potrzeb.
