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

# كمية/عدّاد أيقونة السلة لا يتحدّث

> يوضح هذا المقال كيفية إصلاح كمية أيقونة السلة عندما لا تتحدّث في Upcart.

<div id="overview">
  # نظرة عامة
</div>

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

**إليك مثالًا على شكل عدم التطابق هذا:**

<img src="https://mintcdn.com/aftersell/uxKAdY-e0h16xa48/images/upcart/cart-counter-drawer-vs-theme-icon.gif?s=2b4c08af3555b89b66d7926793bc3833" alt="درج Upcart يعرض Cart 2 بينما لا تزال فقاعة أيقونة سلة القالب تعرض 1" width="2560" height="1080" data-path="images/upcart/cart-counter-drawer-vs-theme-icon.gif" />

***

<div id="important-steps-before-you-start">
  # خطوات مهمة قبل أن تبدأ!
</div>

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

<div id="1-use-chrome-developer-tools">
  ### **1. استخدم أدوات مطوري Chrome**
</div>

كل قالب مختلف، لذا ستحتاج إلى استخدام أدوات مطوري Chrome ‏(Inspect) لتحديد اسم فئة أيقونة سلتك.

* انقر بزر الفأرة الأيمن على أيقونة السلة في واجهة متجرك واختر **Inspect** في Google Chrome.
* ابحث عن عنصر HTML الخاص بأيقونة سلتك (مثلًا، **`<span class="cart-count-bubble">`**).
* **هل تحتاج إلى مساعدة في استخدام أدوات مطوري Chrome؟** اطّلع على [هذا الدليل](https://developer.chrome.com/docs/devtools/overview/) للحصول على تعليمات خطوة بخطوة.

<div id="2-reach-out-for-help-optional">
  ### **2. اطلب المساعدة (اختياري)**
</div>

إذا لم تتمكن من العثور على فئة أيقونة سلتك أو شعرت بأنك عالق، فلا تقلق! لديك خيارات:

* **تواصل مع مطور القالب الخاص بك:** فهو يعرف قالبك بشكل أفضل ويمكنه مساعدتك في العثور على الفئة الصحيحة.
* **استعن بأحد خبراء Shopify:** إذا كنت بحاجة إلى دعم إضافي، فلدى Shopify دليل بخبراء موثوقين يمكنهم المساعدة. [اعثر على خبير Shopify هنا](https://experts.shopify.com/).

<div id="custom-code-disclaimer">
  ## 🚧 **إخلاء مسؤولية عن الكود المخصص**
</div>

الكود المثال المقدم أدناه هو مجرد قالب، **لن يعمل إذا نسخته ولصقته مباشرة**. يجب عليك استبدال اسم الفئة النائب (مثلًا **`.cart-count-bubble > span`**) باسم الفئة المحدد لأيقونة سلتك.

***

<div id="step-by-step-fix">
  # الإصلاح خطوة بخطوة
</div>

قسّمنا هذه العملية إلى ثلاثة مستويات من الإصلاحات، بدءًا من الحل الأبسط (المستوى 1). يبني كل مستوى على المستوى السابق؛ جرّب المستوى 1 أولًا، ثم انتقل إلى المستوى 2 أو 3 فقط عند الحاجة.

<div id="step-1-add-custom-code-in-upcart">
  ## **الخطوة 1: أضف كودًا مخصصًا في Upcart**
</div>

أولًا، نظرًا لأننا سنحتاج إلى إضافة بعض كود HTML المخصص في محرر Upcart، فلنجهّز ذلك القسم:

1. انتقل إلى **Upcart Editor > Settings**، ثم افتح تبويب **Custom HTML** (خلف **More settings** إذا لم يتسع له صف التبويبات).
2. اضبط الموقع على **Scripts (Before Load)**.
3. الصق الكود المعدّل هنا (سنقدم أمثلة لكل مستوى أدناه).

إليك كيف يبدو ذلك:

<img src="https://mintcdn.com/aftersell/uxKAdY-e0h16xa48/images/upcart/cart-counter-custom-html-settings-location.gif?s=d70ce32a4328c99bf2d0b9d18efcd853" alt="إعدادات Custom HTML في Upcart مع ضبط موقع HTML على Scripts Before Load" width="1588" height="1080" data-path="images/upcart/cart-counter-custom-html-settings-location.gif" />

***

<div id="step-2-apply-the-fix-by-level">
  # **الخطوة 2: طبّق الإصلاح حسب المستوى**
</div>

<div id="level-1-basic">
  ## المستوى 1 (أساسي)
</div>

عند تحميل السلة، يجمع هذا السكربت الكميات في عناصر سطور السلة ويكتبها في عنصر العدّاد داخل فقاعة سلة قالبك. وهو يناسب القوالب التي يوجد فيها العدّاد في عنصر متداخل بسيط (على سبيل المثال، `.cart-count-bubble > span`).

**لا تنسَ**

* استبدل **`.cart-count-bubble > span`** بفئة أيقونة سلتك.
* اختبره في واجهة متجرك بعد إضافة الكود.

<img src="https://mintcdn.com/aftersell/uxKAdY-e0h16xa48/images/upcart/cart-counter-level-1-count-bubble-script.gif?s=ef698547d55d921009278b3a006e4a9d" alt="لصق سكربت العدّاد للمستوى 1 في Custom HTML في Upcart باستخدام محدد cart-count-bubble" width="1996" height="1080" data-path="images/upcart/cart-counter-level-1-count-bubble-script.gif" />

<div id="example-code-for-level-1">
  ## كود مثال للمستوى 1
</div>

```text theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
<script>  
window.upcartSubscribeCartLoaded((event) => {  
    const countEl = document.querySelector('.cart-count-bubble > span');  
    const itemCount = event.cart.items.reduce((total, item) => total + item.quantity, 0);  
    countEl.innerText = itemCount;  
});  
</script>
```

<Note>
  **ملاحظة قديمة:** لا تزال دوال رد النداء `window.upcartOnCartLoaded` تعمل ولكنها مهملة وتسجّل تحذيرات في وحدة التحكم. استخدم `upcartSubscribeCartLoaded` لجميع السكربتات الجديدة. لاحظ أن `event.cart` لا يحتوي على خاصية `item_count`؛ استخدم `event.cart.items.reduce((total, item) => total + item.quantity, 0)` لحساب إجمالي عدد العناصر.
</Note>

***

<div id="level-2-moderate">
  ## المستوى 2 (متوسط)
</div>

إذا لم يعمل المستوى 1، فقد يستبدل قالبك كامل HTML الخاص بأيقونة السلة عند تغيّر العدّاد. تعيد هذه النسخة بناء ترميز الأيقونة لحالتَي السلة الفارغة وغير الفارغة بحيث يبقى العدّاد والأيقونة متزامنين.

**لا تنسَ**

* استبدل **`#cart-icon-bubble-custom`** بمحدد غلاف أيقونة السلة الخاص بقالبك.
* اختبره بعد الحفظ.

<Frame>
  <img src="https://mintcdn.com/aftersell/uxKAdY-e0h16xa48/images/upcart/cart-counter-level-2-icon-bubble-script.gif?s=7d36ca92c77564a670a1940818b7d86b" alt="لصق سكربت أيقونة السلة للمستوى 2 في Custom HTML في Upcart باستخدام محدد cart-icon-bubble-custom" width="1876" height="1080" data-path="images/upcart/cart-counter-level-2-icon-bubble-script.gif" />
</Frame>

<div id="example-code-for-level-2">
  ### كود مثال للمستوى 2
</div>

```text theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
<script>  
;(() => {  
function updateCartCount(itemCount) {  
    const iconWrapperEl = document.querySelector('#cart-icon-bubble-custom');  
    if (itemCount === 0) {  
        iconWrapperEl.innerHTML = `<span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-cart-empty" viewBox="0 0 40 40"><path fill="currentColor" fill-rule="evenodd" d="M15.75 11.8h-3.16l-.77 11.6a5 5 0 0 0 4.99 5.34h7.38a5 5 0 0 0 4.99-5.33L28.4 11.8zm0 1h-2.22l-.71 10.67a4 4 0 0 0 3.99 4.27h7.38a4 4 0 0 0 4-4.27l-.72-10.67h-2.22v.63a4.75 4.75 0 1 1-9.5 0zm8.5 0h-7.5v.63a3.75 3.75 0 1 0 7.5 0z"></path></svg></span><span class="visually-hidden">Cart</span>`;  
    } else {  
        iconWrapperEl.innerHTML = `<span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-cart" viewBox="0 0 40 40"><path fill="currentColor" fill-rule="evenodd" d="M20.5 6.5a4.75 4.75 0 0 0-4.75 4.75v.56h-3.16l-.77 11.6a5 5 0 0 0 4.99 5.34h7.38a5 5 0 0 0 4.99-5.33l-.77-11.6h-3.16v-.57A4.75 4.75 0 0 0 20.5 6.5m3.75 5.31v-.56a3.75 3.75 0 1 0-7.5 0v.56zm-7.5 1h7.5v.56a3.75 3.75 0 1 1-7.5 0zm-1 0v.56a4.75 4.75 0 1 0 9.5 0v-.56h2.22l.71 10.67a4 4 0 0 1-3.99 4.27h-7.38a4 4 0 0 1-4-4.27l.72-10.67z"></path></svg></span><span class="visually-hidden">Cart</span><div class="cart-count-bubble"><span aria-hidden="true">${itemCount}</span><span class="visually-hidden">${itemCount} item</span></div>`;  
    }  
}  
  
window.upcartSubscribeCartLoaded((event) => {  
    const itemCount = event.cart.items.reduce((total, item) => total + item.quantity, 0);  
    updateCartCount(itemCount);  
});  
})();  
</script>
```

<Note>
  **ملاحظة قديمة:** لا تزال دوال رد النداء `window.upcartOnCartLoaded` تعمل ولكنها مهملة وتسجّل تحذيرات في وحدة التحكم. استخدم `upcartSubscribeCartLoaded` لجميع السكربتات الجديدة.

  لاحظ أن `event.cart` **لا** يحتوي على خاصية `item_count` — تشتق السكربتات أعلاه الإجمالي باستخدام `event.cart.items.reduce((total, item) => total + item.quantity, 0)` وتمرره كـ `itemCount`. النسخ الأقدم من هذه المقاطع التي تُدرج `cart.item_count` تُطلق خطأ `ReferenceError` ولا تحدّث الأيقونة أبدًا بصمت.
</Note>

***

<div id="level-3-advanced">
  ## المستوى 3 (متقدم)
</div>

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

**لا تنسَ**

* استبدل **`#cart-icon-bubble-custom-desktop`** و\*\*`#cart-icon-bubble-custom-mobile`\*\* بفئات قالبك.
* اختبر بدقة على عرضَي سطح المكتب والجوال.

<img src="https://mintcdn.com/aftersell/uxKAdY-e0h16xa48/images/upcart/cart-counter-level-3-desktop-mobile-script.gif?s=36058384ee181aa8fc630e3c7bfc8716" alt="لصق سكربت المستوى 3 في Custom HTML في Upcart مع محددات منفصلة لأيقونة السلة على سطح المكتب والجوال" width="1996" height="1080" data-path="images/upcart/cart-counter-level-3-desktop-mobile-script.gif" />

<div id="example-code-for-level-3">
  ### كود مثال للمستوى 3
</div>

```text theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
<script>  
;(() => {  
function updateCartCount(itemCount) {  
    // Desktop  
    const desktopIconWrapperEl = document.querySelector('#cart-icon-bubble-custom-desktop');  
    if (itemCount === 0) {  
        desktopIconWrapperEl.innerHTML = `<span>Cart</span><span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-cart-empty" viewBox="0 0 40 40"><path fill="currentColor" fill-rule="evenodd" d="M15.75 11.8h-3.16l-.77 11.6a5 5 0 0 0 4.99 5.34h7.38a5 5 0 0 0 4.99-5.33L28.4 11.8zm0 1h-2.22l-.71 10.67a4 4 0 0 0 3.99 4.27h7.38a4 4 0 0 0 4-4.27l-.72-10.67h-2.22v.63a4.75 4.75 0 1 1-9.5 0zm8.5 0h-7.5v.63a3.75 3.75 0 1 0 7.5 0z"></path></svg></span>`;  
    } else {  
        desktopIconWrapperEl.innerHTML = `<span>Cart (${itemCount})</span><span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-cart" viewBox="0 0 40 40"><path fill="currentColor" fill-rule="evenodd" d="M20.5 6.5a4.75 4.75 0 0 0-4.75 4.75v.56h-3.16l-.77 11.6a5 5 0 0 0 4.99 5.34h7.38a5 5 0 0 0 4.99-5.33l-.77-11.6h-3.16v-.57A4.75 4.75 0 0 0 20.5 6.5m3.75 5.31v-.56a3.75 3.75 0 1 0-7.5 0v.56zm-7.5 1h7.5v.56a3.75 3.75 0 1 1-7.5 0zm-1 0v.56a4.75 4.75 0 1 0 9.5 0v-.56h2.22l.71 10.67a4 4 0 0 1-3.99 4.27h-7.38a4 4 0 0 1-4-4.27l.72-10.67z"></path></svg></span>`;  
    }  
  
    // Mobile  
    const mobileIconWrapperEl = document.querySelector('#cart-icon-bubble-custom-mobile');  
    if (itemCount === 0) {  
        mobileIconWrapperEl.innerHTML = `<span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-cart-empty" viewBox="0 0 40 40"><path fill="currentColor" fill-rule="evenodd" d="M15.75 11.8h-3.16l-.77 11.6a5 5 0 0 0 4.99 5.34h7.38a5 5 0 0 0 4.99-5.33L28.4 11.8zm0 1h-2.22l-.71 10.67a4 4 0 0 0 3.99 4.27h7.38a4 4 0 0 0 4-4.27l-.72-10.67h-2.22v.63a4.75 4.75 0 1 1-9.5 0zm8.5 0h-7.5v.63a3.75 3.75 0 1 0 7.5 0z"></path></svg></span><span class="visually-hidden">Cart</span>`;  
    } else {  
        mobileIconWrapperEl.innerHTML = `<span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-cart" viewBox="0 0 40 40"><path fill="currentColor" fill-rule="evenodd" d="M20.5 6.5a4.75 4.75 0 0 0-4.75 4.75v.56h-3.16l-.77 11.6a5 5 0 0 0 4.99 5.34h7.38a5 5 0 0 0 4.99-5.33l-.77-11.6h-3.16v-.57A4.75 4.75 0 0 0 20.5 6.5m3.75 5.31v-.56a3.75 3.75 0 1 0-7.5 0v.56zm-7.5 1h7.5v.56a3.75 3.75 0 1 1-7.5 0zm-1 0v.56a4.75 4.75 0 1 0 9.5 0v-.56h2.22l.71 10.67a4 4 0 0 1-3.99 4.27h-7.38a4 4 0 0 1-4-4.27l.72-10.67z"></path></svg></span><span class="visually-hidden">Cart</span><div class="cart-count-bubble"><span aria-hidden="true">${itemCount}</span><span class="visually-hidden">${itemCount} item</span></div>`;  
    }  
}  
  
window.upcartSubscribeCartLoaded((event) => {  
    const itemCount = event.cart.items.reduce((total, item) => total + item.quantity, 0);  
    updateCartCount(itemCount);  
});  
})();  
</script>
```

<Note>
  **ملاحظة قديمة:** لا تزال دوال رد النداء `window.upcartOnCartLoaded` تعمل ولكنها مهملة وتسجّل تحذيرات في وحدة التحكم. استخدم `upcartSubscribeCartLoaded` لجميع السكربتات الجديدة.

  لاحظ أن `event.cart` **لا** يحتوي على خاصية `item_count` — تشتق السكربتات أعلاه الإجمالي باستخدام `event.cart.items.reduce((total, item) => total + item.quantity, 0)` وتمرره كـ `itemCount`. النسخ الأقدم من هذه المقاطع التي تُدرج `cart.item_count` تُطلق خطأ `ReferenceError` ولا تحدّث الأيقونة أبدًا بصمت.
</Note>

***

<div id="still-not-working">
  # لا يزال لا يعمل؟
</div>

إذا لم يحل أي من هذه المستويات المشكلة، فلا تقلق، فلم تنفد خياراتك بعد! من المرجح أن هذا يعني أن قالبك يتطلب تخصيصًا أكثر تقدمًا.

**إليك ما يمكنك فعله بعد ذلك:**

* تواصل مع مطور القالب الخاص بك للحصول على المساعدة.
* استعن بأحد [خبراء Shopify](https://www.shopify.com/partners/directory) الذي يمكنه إنشاء حل مخصص يناسب متجرك.
