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

# Build a Box

> عرض Build a Box بعد الشراء: يجمّع المتسوقون صندوقًا مخصصًا من منتجات تختارها أنت، مع خصومات كمية تزداد عمقًا كلما امتلأ الصندوق.

**Build a Box** هو نوع من عروض ما بعد الشراء حيث يجمّع المتسوق صندوقه الخاص من مجموعة منتجات تختارها أنت، ويشتري الاختيار بأكمله في معاملة واحدة. فبدلًا من قبول منتج واحد أو رفضه، يختار ما يدخل في الصندوق وبأي كمية، ويمكن أن يزداد خصم الكمية عمقًا كلما امتلأ الصندوق.

يوجد إلى جانب عروض ما بعد الشراء أحادية المنتج ومتعددة المنتجات، ويتكامل مع عناصر واجهة العرض المعتادة مثل العنوان والمؤقّت.

<Note>
  يعرض Build a Box عدة منتجات مختلفة. لبيع وحدات أكثر من منتج واحد بأسعار متدرجة، استخدم [عروض الكمية الإضافية](/ar/aftersell/quantity-upsells) بدلًا من ذلك.
</Note>

لإضافة هذا العرض، افتح المسار، واختر **Add offer**، ثم اختر **Build a box**.

<div id="setting-up-the-box">
  ## إعداد الصندوق
</div>

<div id="choosing-candidate-products">
  ### اختيار المنتجات المرشحة
</div>

يتحكم قسم **Product selection** في المنتجات التي يمكن للمتسوق الاختيار من بينها. تُسمى هذه *المرشحات*.

1. افتح عرض الصندوق في محرر مسار ما بعد الشراء.
2. وسّع **Product selection**.
3. حدد **Add product** واختر منتجًا واحدًا أو أكثر. المنتجات الموجودة بالفعل في القائمة تُستبعد من أداة الاختيار.
4. احفظ.

يدعم الصندوق حتى **12 مرشحًا**. اسحب المقبض في أي صف لإعادة الترتيب — وهذا هو الترتيب الذي يراه المتسوقون. استخدم أيقونة الحذف لإزالة أحدها؛ لا يمكنك إزالة آخر مرشح متبقٍ، لأن الصندوق يحتاج إلى مرشح واحد على الأقل.

<div id="box-size">
  ### حجم الصندوق
</div>

يحدد **Box size** عدد العناصر التي يجب على المتسوق اختيارها:

| الإعداد                      | ما الذي يفعله                                                                     |
| ---------------------------- | --------------------------------------------------------------------------------- |
| **Minimum items**            | الحد الأدنى. يُحتسب بالعناصر، فثلاث قطع من منتج واحد تُحتسب ثلاثة.                |
| **Maximum items (optional)** | اتركه فارغًا لعدم وجود حد. اجعله مساويًا للحد الأدنى للحصول على صندوق ثابت الحجم. |

مع صندوق ثابت الحجم، يوضّح المحرر أن على المتسوقين اختيار هذا العدد بالضبط وسيرون عدّادًا بصيغة "0 of N selected".

<Warning>
  إذا لم تستطع مرشحاتك مجتمعةً بلوغ الحد الأدنى، يعرض المحرر لافتة حرجة بعنوان **"This box won't be shown to shoppers"**، مع ذكر أكبر عدد عناصر تسمح به منتجاتك والحد الأدنى الذي عيّنته. يُتخطى العرض بالكامل وقت التقديم.

  يعتمد الحل الذي تقترحه اللافتة على السبب:

  * **أحد المنتجات محدد كمية معطل لديه**، لذا لا يمكن إضافته إلا مرة واحدة — أعد تفعيل أحدها، أو أضف مزيدًا من المنتجات، أو اخفض الحد الأدنى.
  * **في الحالات الأخرى** — اخفض الحد الأدنى، أو أضف مزيدًا من المنتجات، أو ارفع الحد الأقصى لكمية أحد المنتجات.
  * **الحد الأقصى للصندوق لا يسمح بأي عناصر إطلاقًا** — تذكر اللافتة ذلك بدلًا من ذلك، وتطلب منك رفعه أو تركه فارغًا.
</Warning>

<div id="discounts">
  ## الخصومات
</div>

<div id="discount-tiers">
  ### مستويات الخصم
</div>

يحدد قسم **Box discount** خصمًا يتدرج مع عدد العناصر في الصندوق. أضف مستوى عبر **Add tier**، ثم عيّن **Minimum items for tier N** و**Discount for tier N**.

كيف يُختار المعدل:

* يحصل المتسوق على **أعمق** معدل يستحقه صندوقه، وليس مجرد آخر عتبة تم تجاوزها. إذا ضبطت 3 عناصر فأكثر عند 30% و6 عناصر فأكثر عند 20%، فسيحصل المتسوق الذي لديه 6 عناصر على 30%.
* يُقيَّم المعدل عند **عدد العناصر الفعلي الحالي**، وليس عند الحد الأدنى للصندوق. تُفتح البطاقة بالسعر الكامل وتُعاد تسعيرها كلما امتلأ الصندوق، لذا فإن المعدل المعروض على المتسوق هو دائمًا المعدل الذي يستحقه اختياره الحالي فعلًا.
* جدول المستويات الفارغ صالح ويعني بيع الصندوق بالسعر الكامل.

لا يوجد حد أقصى للخصم على مستوى الصندوق — جدول المستويات هو الشيء الوحيد الذي يحدد المعدل.

يعرض المحرر تحذيرات لأشكال من المستويات تبدو غير مقصودة. اثنان منها يمنعان الحفظ؛ أما الثالث فاستشاري فقط:

| التحذير                                                                       | متى يظهر                                                                          | يمنع الحفظ؟ |
| ----------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | ----------- |
| مستوى يمنح خصمًا أقل من مستوى أصغر منه، فلا يُطبَّق أبدًا                     | مستوى يمتلك حدًا أدنى أعلى تمامًا لكن معدل خصمه أقل من المستوى الذي يليه أدنى منه | نعم         |
| مستوى يقع تحت الحد الأدنى للصندوق، فكل صندوق يمكن للمتسوق شراؤه يستحقه بالفعل | الحد الأدنى للمستوى أقل من الحد الأدنى للصندوق                                    | لا          |
| مستويان يبدآن عند نفس عدد العناصر                                             | حدود دنيا مكررة للمستويات                                                         | لا          |

كما يجب أن يكون الحد الأقصى للصندوق مساويًا للحد الأدنى أو أعلى منه. ضبط الحد الأقصى دون الحد الأدنى يمنع الحفظ.

<div id="per-product-discounts">
  ### خصومات على مستوى المنتج
</div>

يمكن لأي مرشح أن يحمل خصمه الخاص بدلًا من اتباع معدل الصندوق. افتح المرشح، وانتقل إلى **Discount**، وفعّل **Give this product its own discount**.

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

<div id="editing-several-products-at-once">
  ### تحرير عدة منتجات دفعة واحدة
</div>

يفتح **Edit all products** لوحة تحرير جماعي. ألغِ تحديد أي مرشح تريد استثناءه من التحرير.

حيثما تختلف المنتجات المحددة، يعرض الحقل **Mixed** — وتحريره يكتب قيمتك في جميعها، وتركه دون تغيير يحافظ على قيمة كل منتج الخاصة. يعرض مفتاح التجاوز حالة غير محددة عندما يكون لدى بعضها فقط تجاوزات.

<div id="per-product-settings">
  ## الإعدادات لكل منتج
</div>

لكل مرشح لوحته الخاصة، وتغطي **Badge** و**Product image badge** و**Image** و**Product details** (بما فيها تقييمات المراجعات، مع ألوان نجوم افتراضية `#fdcc0d` و`#d1d5db`) و**Variant options** و**Box limits** و**Discount** و**Already purchased**.

لا يُضبط مظهر البطاقة لكل مرشح على حدة. بل يأتي من إعداد [**Layout**](#layout) على مستوى العرض، لذا تتخذ جميع البطاقات في الصندوق الشكل نفسه.

إعدادان تحت **Box limits** يستحقان الذكر:

* **Show quantity selector** — مفعّل افتراضيًا. عطّله ليضيف كل نقر وحدة واحدة بالضبط، دون منتقي كمية على البطاقة.
* **Maximum quantity in a box** — اتركه فارغًا لعدم وجود حد، أو اضبطه على 1 للحفاظ على تنوع صندوق التشكيلة.

يتحكم قسم **Already purchased** في ما يحدث عندما يملك المتسوق هذا المنتج بالفعل — سواء اشتراه في الطلب الحالي أو قبله في خطوة سابقة من المسار. تتم المطابقة حسب معرّف المنتج، لذا فإن نسخة مختلفة من منتج تم شراؤه تُحتسب أيضًا. اختر إحدى معالجات ثلاث:

| الخيار                         | ما الذي يفعله                                                                                                          |
| ------------------------------ | ---------------------------------------------------------------------------------------------------------------------- |
| **Show normally**              | يظهر المنتج في الصندوق دون معالجة خاصة (الافتراضي).                                                                    |
| **Show a "Your choice" badge** | يبقى المنتج في الصندوق وتضع شارة على شكل حبّة علامة عليه بأنه مما يملكه المتسوق بالفعل.                                |
| **Hide the product**           | يُحذف المنتج من الصندوق تمامًا. غير متاح لمرشحي المنتج الأغلى/الأرخص، لأنهما يُحدَّدان من الطلب بعد قراءة هذا الإعداد. |

عند تحديد **Show a "Your choice" badge**، تظهر ثلاثة إعدادات إضافية:

* **Badge text** — نص الشارة. اتركه فارغًا لاستخدام ترجمة متجرك (تُضبط في **Settings > Translations** تحت **Already purchased badge**). القيمة الافتراضية "Your choice".
* **Badge color** — لون تعبئة حبّة الشارة (hex، الافتراضي `#008060`).
* **Badge text color** — لون النص داخل حبّة الشارة (hex، الافتراضي `#ffffff`).

الشارة مرئية في معاينة محرر المسار، فيمكنك رؤية شكلها قبل النشر.

<div id="layout">
  ## التخطيط
</div>

يحدد **Layout**، ضمن إعدادات تخطيط الصندوق، شكل البطاقة وعدد البطاقات في كل صف:

| التخطيط           | كيف يبدو                                                            |
| ----------------- | ------------------------------------------------------------------- |
| **Classic**       | الصورة بجانب النص، ومنتجان في كل صف.                                |
| **Compact grid**  | الصورة فوق النص، وثلاثة في كل صف، وواحد في كل صف على الهاتف.        |
| **Spotlight**     | يتصدّر المنتج الأول بنصف العرض، وتليه البقية في الشبكة المضغوطة.    |
| **Split columns** | المنتجات على اليسار، والإجمالي وزر الشراء في عمود مستقل على اليمين. |

يضبط القسم نفسه الحشو المحيط بالصندوق.

<div id="progress">
  ## التقدم
</div>

يتحكم **Box progress** في مؤشر الامتلاء:

| الإعداد                  | الخيارات                              | الافتراضي    |
| ------------------------ | ------------------------------------- | ------------ |
| **Position**             | فوق المنتجات / فوق زر الشراء / كلاهما | فوق المنتجات |
| **Show progress bar**    | تشغيل / إيقاف                         | تشغيل        |
| **Bar color**            | Hex                                   | `#008060`    |
| **Bar position**         | فوق النص / تحت النص                   | فوق النص     |
| **Top / bottom padding** | 0–10، بخطوات من 2                     | 0            |

لا يوجد وضع "مخفي". لإزالة سطر التقدم تمامًا، امسح حقل نص التقدم.

<div id="progress-text-variables">
  ### متغيرات نص التقدم
</div>

اكتب `{` في أيٍّ من محررات [صياغة التقدم](#progress-wording) الثلاثة لإدراج متغير.

| المتغير                                               | ما الذي يعرضه                                                                                                                                                                                |
| ----------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `{box-progress}`                                      | جملة التقدم الافتراضية بأكملها. تتغير بنيتها عبر حالات الصندوق، وهو ما لا يمكن لأي جملة مكتوبة يدويًا واحدة فعله — راجع [صياغة التقدم](#progress-wording) لإعادة صياغة كل حالة بدلًا من ذلك. |
| `{items-in-box}`                                      | عدد العناصر الموجودة حاليًا في الصندوق.                                                                                                                                                      |
| `{items-to-go}`                                       | العدد الخام المتبقي للوصول إلى الحد الأدنى.                                                                                                                                                  |
| `{box-minimum}`                                       | الحد الأدنى للصندوق.                                                                                                                                                                         |
| `{box-maximum}`                                       | الحد الأقصى للصندوق.                                                                                                                                                                         |
| `{current-discount}`                                  | المعدل الساري حاليًا.                                                                                                                                                                        |
| `{next-discount}`                                     | المعدل الذي يُفتح بإضافة مزيد من العناصر. فارغ عند أعمق مستوى.                                                                                                                               |
| `{items-to-next-discount}`                            | عدد العناصر الإضافية اللازمة لبلوغه. فارغ عند أعمق مستوى.                                                                                                                                    |
| `{subtotal}` / `{total}` / `{discount}` / `{savings}` | أسعار الصندوق، مجموعة عبر الاختيار بأكمله. فارغة حتى يتحدد سعر.                                                                                                                              |
| `{first-name}`                                        | الاسم الأول للمتسوق.                                                                                                                                                                         |
| `{timer}` / `{timer-end}`                             | العد التنازلي للعرض.                                                                                                                                                                         |

متغيرات عنوان الخطوة المتاحة في العروض متعددة المنتجات لا يوجد لها مقابل في الصندوق ولا تُعرض هنا.

<div id="progress-wording">
  ### صياغة التقدم
</div>

يتكون **Progress wording** من ثلاثة محررات نص منسق، واحد لكل مرحلة من مراحل ملء الصندوق. اكتب `{` في أيٍّ منها لإدراج [متغير](#progress-text-variables). امسح الحقل لإخفاء سطر التقدم في تلك الحالة.

| المحرر                               | متى يظهر سطره                                                                                                               |
| ------------------------------------ | --------------------------------------------------------------------------------------------------------------------------- |
| **Before the minimum items reached** | ما دام الصندوق دون حده الأدنى. لا يستطيع المتسوق إتمام الشراء بعد، لذا فهذا السطر هو الشيء الوحيد الذي يوضح سبب تعطيل الزر. |
| **Between minimum and maximum**      | بمجرد تجاوز الصندوق حده الأدنى، ما دام هناك خصم أعمق أو الحد الأقصى لم يُبلغ بعد.                                           |
| **Maximum items hit**                | بمجرد أن يحتوي الصندوق على كل ما يمكنه الحصول عليه: الحد الأقصى، أو أعمق خصم في صندوق بلا حد أقصى.                          |

لا يعرض المحرر إلا الحقول التي يمكن لصندوقك بلوغها فعلًا:

* يظهر **Before the minimum items reached** فقط عندما يكون للصندوق حد أدنى أكبر من صفر.
* يظهر **Between minimum and maximum** فقط عندما يكون للصندوق حد أقصى أو مستوى خصم واحد على الأقل. في غياب كليهما، يكون تجاوز الحد الأدنى هو الحالة النهائية أصلًا.
* يظهر **Maximum items hit** دائمًا. كل صندوق يبلغه.

لأن هذه محررات نص منسق، يمكنك جعل الصياغة عريضة وتلوينها وتغيير حجمها، لا مجرد تغيير الكلمات.

يؤدي تغيير **Language** الخاصة بالصندوق إلى إعادة ترجمة أي صياغة لم تعدّلها. بمجرد أن تعدّل حقلًا، يُترك تمامًا كما كتبته.

<div id="tile-button-text">
  ## نص زر البطاقة
</div>

يتيح لك قسم **Tile button text** في لوحة Buttons تخصيص صياغة زرّي الإضافة والإزالة اللذين يظهران على بطاقة كل مرشح، لهذا المسار فقط.

* **Add button text** — التسمية المعروضة على البطاقة قبل أن يضيف المتسوق المنتج إلى صندوقه. القيمة الافتراضية "Add to box".
* **Remove button text** — التسمية المعروضة على البطاقة بعد إضافة المتسوق للمنتج. القيمة الافتراضية "Remove".

اترك أي حقل فارغًا لاستخدام ترجمة متجرك من صفحة Translations. إذا كانت ترجمة المتجر فارغة أيضًا، تُستخدم القيمة الإنجليزية الافتراضية.

تسمية حالة عدم التوفر ("Unavailable") لا تتأثر بهذه الإعدادات.

لتعيين قيم افتراضية لهذه التسميات على مستوى المتجر بدلًا من التجاوز لكل مسار، انتقل إلى **Translations** في لوحة إدارة Aftersell وحدّث إدخالي **Add to box** و**Remove from box**.

<div id="shipping">
  ## الشحن
</div>

يحدد قسم **Shipping** ما يفرضه الصندوق مقابل التوصيل. إما أن يُشحن الصندوق مجانًا أو يضيف رسوم شحن. عند فرض رسوم، تحدد المبلغ وتختار ما إذا كان سيُضرب في عدد العناصر في الصندوق، بحيث يمكن أن يكلّف صندوق من ستة عناصر ستة أضعاف السعر لكل وحدة أو رسومًا ثابتة واحدة.

<div id="language-and-order-tagging">
  ## اللغة ووسوم الطلبات
</div>

* يحدد **Language** اللغة المستخدمة في نصوص الصندوق وأزراره، وفي ترجمات تفاصيل المنتج.
* يطبّق **Order tag** وسمًا من Shopify على كل طلب يقبل الصندوق. استخدمه لتوجيه التنفيذ أو لعزل طلبات الصندوق في التقارير.

<div id="limitations">
  ## القيود
</div>

* **زر قبول واحد مشترك.** للصندوق دعوة واحدة لاتخاذ إجراء بدلًا من أزرار لكل منتج، لأن Shopify يحدّ من عدد عمليات القبول التي يمكن لصفحة ما بعد الشراء إجراؤها.
* **لا توجد عروض استبدال.** لا يمكن استخدام الصندوق كعرض رفع بديل.
* **تفصيل الأسعار لا يُطوى.** يقوم **Show price breakdown**، تحت **General settings**، بتشغيله أو إيقافه. عند تفعيله يكون موسّعًا دائمًا — أما العرض متعدد المنتجات فيضع تفصيله خلف رابط "Show price breakdown".

<div id="subscription-only-products">
  ### المنتجات الاشتراكية فقط
</div>

المنتجات المضبوطة للبيع كاشتراك فقط (`requiresSellingPlan: true` في Shopify — بلا خيار شراء لمرة واحدة) لا يمكن تضمينها في عرض build-a-box. كل عنصر في الصندوق يُحاسَب كشراء لمرة واحدة في الطلب، لذا يرفض Shopify المنتجات الاشتراكية فقط وقت التقديم. تُسقَط هذه المرشحات بصمت في كل طلب حقيقي، رغم أن معاينة محرر المسار تستمر في عرضها.

يحذرك محرر المسار عند اكتشاف هذه الحالة:

* **لافتة تحذير** — بعض المرشحات اشتراكية فقط لكن ما يكفي من المرشحات غير الاشتراكية يبقى لبلوغ الحد الأدنى للصندوق. تسرد اللافتة المنتجات المتأثرة بالاسم. لا يزال العرض يظهر للمتسوقين، لكن بمنتجات أقل من المضبوط.
* **لافتة حرجة** — جميع المرشحات اشتراكية فقط، أو أن المرشحات غير الاشتراكية المتبقية لا تستطيع بلوغ الحد الأدنى للصندوق. يُتخطى العرض بالكامل لكل متسوق.

**إذا رأيت لافتة التحذير**، فالصندوق لا يزال يعمل — لكنه يقدّم منتجات أقل مما ضبطت. أضف مزيدًا من المرشحات التي يمكن شراؤها أيضًا لمرة واحدة، ليحمل الصندوق التشكيلة التي أردتها.

**إذا رأيت اللافتة الحرجة**، فلن يعمل العرض إطلاقًا حتى تصلحه. أيٌّ مما يلي يزيلها:

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

يمكنك أيضًا إزالة المرشحات الاشتراكية فقط من الصندوق تمامًا. لا يغيّر ذلك شيئًا للمتسوقين — فهي تُسقَط بالفعل في كل طلب حقيقي — لكنه يُسكت اللافتة ويجعل معاينة المحرر مطابقة لما يُقدَّم فعلًا.

المنتجات **المفعَّل** لها الاشتراك (التي توفر شراءً لمرة واحدة واشتراكًا معًا) لا تُسقَط من الصندوق. تُباع ببساطة كشراء لمرة واحدة، مثل كل عنصر آخر في الصندوق — فالصندوق لا يحمل خطة بيع أبدًا.
