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

# التهيئة

> كل خيارات configure في Aftersell Cart SDK: فتح الدرج، واعتراض الإضافة إلى السلة، والتحقق من صحة النماذج، وتنسيق المبالغ.

يضبط `configure(config)` كيفية سلوك السلة. إنه **استدعاء إعداد**، لذا فهو آمن في أعلى سكربتك تمامًا، قبل تحميل السلة.

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

يمكنك استدعاؤه أكثر من مرة وتُدمج القيم. الاستدعاء اللاحق يتجاوز فقط المفاتيح التي يذكرها، تاركًا البقية كما هي.

<Warning>
  **تمرير `undefined` يمسح المفتاح بدلًا من تخطيه.** `configure({ open_on_add_to_cart: undefined })` يعيد ضبط ذلك الخيار إلى قيمته الافتراضية، متجاهلًا ما ضبطه استدعاء سابق. لترك خيار كما هو، أغفل المفتاح تمامًا.
</Warning>

<div id="options">
  ## الخيارات
</div>

| الخيار                                                          | القيم                              | الافتراضي    | الغرض                                                  |
| --------------------------------------------------------------- | ---------------------------------- | ------------ | ------------------------------------------------------ |
| [`open_on_add_to_cart`](#open_on_add_to_cart)                   | `'always'`، `'never'`، `'default'` | `'default'`  | ما إذا كان الدرج يفتح عند إضافة عنصر.                  |
| [`open_on_background_add`](#open_on_background_add)             | `boolean`                          | `false`      | الفتح أيضًا عندما يضيف شيء *آخر* إلى السلة.            |
| [`validate_form_on_add_to_cart`](#validate_form_on_add_to_cart) | `boolean`                          | `false`      | منع الإضافة إذا كان نموذج المنتج غير صالح.             |
| [`skip_add_to_cart_interceptor`](#skip_add_to_cart_interceptor) | `boolean`                          | `false`      | إيقاف اعتراض Aftersell للإضافة إلى السلة كليًا.        |
| [`skip_open_cart_interceptor`](#skip_open_cart_interceptor)     | `boolean`                          | `false`      | السماح لنقرة أيقونة السلة بالوصول إلى سكربتاتك الأخرى. |
| [`money_format`](#money_format)                                 | سلسلة نصية                         | تنسيق المتجر | تجاوز التنسيق الذي يستخدمه `formatMoney`.              |

***

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

يتحكم فيما إذا كان الدرج يفتح عندما يضيف المتسوق منتجًا.

| القيمة      | السلوك                                                         |
| ----------- | -------------------------------------------------------------- |
| `'always'`  | فتح الدرج دائمًا عند الإضافة.                                  |
| `'never'`   | عدم فتحه أبدًا؛ يُضاف العنصر بصمت.                             |
| `'default'` | اتباع إعداد **Open cart when an item is added** في محرر السلة. |

```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' });
```

استخدام شائع هو إبقاء الدرج مغلقًا في صفحة محددة واحدة مع ترك إعداد التاجر كما هو في كل مكان آخر:

```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>
  إذا كنت تريد هذا فقط للمتجر بأكمله، فهو إعداد موجود بالفعل: **Cart settings → Content → Behavior → Open cart when an item is added**. استخدم `configure` عندما تعتمد الإجابة على الصفحة أو المتسوق أو شيء لا يعرفه إلا كودك.
</Note>

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

اضبطه على `true` لفتح الدرج أيضًا مع إضافات **الخلفية** — تلك التي رصدها Aftersell لكنه لم يعالجها بنفسه.

تُعد الإضافة إضافة خلفية عندما:

* تصل عبر [أحداث السلة القياسية في Shopify](https://shopify.dev/docs/storefronts/themes/best-practices/standard-events) (تُعامل دائمًا كخلفية، أيًا كان ما شغّلها)، أو
* رأى Aftersell طلب السلة على الشبكة **دون** نقرة أو ضغطة مفتاح موثوقة في الثواني الثلاث تقريبًا السابقة — مثل تطبيق أو سكربت آخر يكتب إلى السلة.

الإضافة التي رآها Aftersell على الشبكة وسبقتها *فعلًا* نقرة متسوق ليست إضافة خلفية: فهي تفتح الدرج بالفعل وفق `open_on_add_to_cart`، دون حاجة لهذا الخيار.

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

هذا **بوابة إضافية، وليس تجاوزًا**: تفتح إضافة الخلفية الدرج فقط إذا كان `open_on_add_to_cart` سيسمح بذلك أيضًا. مع `open_on_add_to_cart: 'never'`، لا يفعل هذا الخيار شيئًا.

<Tip>
  الجأ إلى هذا عندما يضيف زر إضافة تابع لطرف ثالث العنصر بشكل صحيح لكنه يترك الدرج مغلقًا. أما إذا لم يصل العنصر إلى السلة إطلاقًا، فتلك مشكلة اعتراض. راجع [`skip_add_to_cart_interceptor`](#skip_add_to_cart_interceptor) و[حالة استخدام منشئ الصفحات](/ar/aftersell/cart/sdk-use-case-page-builder).
</Tip>

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

يشغّل التحقق الأصلي من النماذج في المتصفح (`reportValidity()`) قبل الإضافة، ويلغي الإضافة إذا كان النموذج غير صالح. استخدمه عندما يحتوي نموذج منتجك على حقول إلزامية (رسالة نقش، ملاحظة هدية، مربع اختيار إلزامي) يستطيع المتسوقون حاليًا تخطيها.

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

يعرض المتصفح رسالة التحقق الخاصة به على الحقل المخالف. معطَّل افتراضيًا، لأن قالبًا يحتوي على سمة `required` شاردة في مكان ما داخل نموذج المنتج كان سيبدأ خلاف ذلك في منع الإضافة إلى السلة بصمت.

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

يوقف اعتراض Aftersell للإضافة إلى السلة تمامًا. لمعرفة ما يفعله الاعتراض وكل طرق الانسحاب منه، راجع [اعتراض الإضافة إلى السلة](/ar/aftersell/cart/add-to-cart-interception).

يقوم القالب حينها بالإضافة بنفسه، ويعمل مجددًا كل سكربت يستمع إلى ذلك الإرسال. لا يزال Aftersell يراقب طلب السلة على الشبكة، لذا يفتح الدرج كالمعتاد. لا تفقده بالانسحاب. على القوالب التي يتعرّف عليها Aftersell، تبقى سلة القالب نفسها خاملة، لذا لن تحصل على سلتين. أما على قالب لا يتعرّف عليه، فقد يفتح القالب سلته الخاصة إلى جانب سلتك؛ راجع [هل ستفتح سلة القالب أيضًا؟](/ar/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>
  يُقرأ هذا الخيار **مرة واحدة، عند الإقلاع**. لا يعمل إلا من استدعاء إعداد يُنفَّذ قبل تحميل السلة: سكربت **Initialization** الخاص بسلتك. ضبطه لاحقًا (داخل `ready()` أو من معالج حدث) لا يكون له أي تأثير، ويفشل بصمت.
</Warning>

هذه أداة فجّة تعطّل الاعتراض لكل نموذج على الصفحة. لاستثناء نموذج واحد فقط، استخدم خطاف [`registerSkipAddToCartRule`](/ar/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>

النقر على أيقونة السلة يفتح درج Aftersell. لفعل ذلك بشكل موثوق، يوقف Aftersell النقرة حتى لا يعالجها أي شيء آخر على الصفحة، وهذا يوقف أيضًا **سكربتاتك** من رؤيتها. إذا كان حدث تحليلات أو بكسل ينطلق في كل مكان ما عدا أيقونة السلة، فهذا هو السبب.

اضبط هذا على `true` لإيقاف إسكات النقرة:

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

تعمل مستمعاتك حينها، ولا يزال الدرج يفتح تمامًا كما في السابق. كما أن النقرة لا تزال لا تنتقل إلى `/cart`.

<Warning>
  **هذا يفعل أقل مما يوحي به الاسم.** فهو لا يتخطى معترض أيقونة السلة. إنه فقط يوقف إسكاته للمستمعات الأخرى. لا يزال Aftersell يعالج النقرة ولا يزال يفتح سلتك. للحصول على عنصر تحكم يتجاهله Aftersell كليًا، استخدم الصنف `aftersell-cart-wont-open-cart` بدلًا من ذلك؛ راجع [اعتراض الإضافة إلى السلة](/ar/aftersell/cart/add-to-cart-interception#the-cart-icon-is-separate).
</Warning>

على عكس [`skip_add_to_cart_interceptor`](#skip_add_to_cart_interceptor)، يُقرأ هذا **عند كل نقرة**، لذا يمكنك ضبطه في أي وقت ويسري مفعوله فورًا: من `ready()` أو من معالج حدث أو بشكل مشروط لكل صفحة.

<Note>
  بعض القوالب تستجيب أيضًا لنقرة أيقونة السلة بنفسها. بمجرد أن يتوقف Aftersell عن إسكاتها، فإن القالب الذي يفتح درجه الخاص سيفعل ذلك إلى جانب درجك. إذا رأيت سلتين بعد تشغيل هذا، فأضف الصنف `aftersell-cart-wont-open-cart` إلى أيقونة القالب وافتح السلة من معالجك الخاص باستخدام [`actions.open()`](/ar/aftersell/cart/sdk-actions#open-and-close).
</Note>

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

يتجاوز [تنسيق العملة في Shopify](https://shopify.dev/docs/api/liquid/filters/money) الذي يستخدمه [`formatMoney`](/ar/aftersell/cart/sdk-actions#formatmoneycents). الافتراضي هو تنسيق متجرك نفسه؛ وإذا لم يكن متاحًا، تعود الأسعار إلى `$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"
```

لأن `configure` يدمج القيم و`formatMoney` يقرأ القيمة الحية، يمكنك تغيير التنسيق أثناء التشغيل، مثلًا عندما يعمل مبدّل العملات:

```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>
  هذا يغيّر كيفية *عرض* SDK والسلة للأسعار. لا يغيّر العملة التي يُحاسَب بها المتسوق؛ فذلك من اختصاص Shopify Markets.
</Note>

<div id="where-to-go-next">
  ## إلى أين تذهب بعد ذلك
</div>

* **[الإجراءات](/ar/aftersell/cart/sdk-actions)**: اقرأ السلة وغيّرها.
* **[الخطافات](/ar/aftersell/cart/sdk-hooks)**: تحكّم على مستوى كل نموذج وكل بند، حيث يكون `configure` واسعًا أكثر من اللازم.
* **[حالات الاستخدام](/ar/aftersell/cart/sdk-use-cases)**: حلول كاملة للطلبات الشائعة.
