يضيف بلوك Custom code كود HTML أو React خاصًا بك إلى السلة. ضعه في أي قسم من الدرج، أو أدرجه داخل Cart items كبلوك فرعي ليتكرر لكل سطر. بخلاف البلوكات الأخرى، لا توجد له إعدادات Content ولا قسم Design: البلوك هو الكود، لذا تعمل بالكامل في علامة تبويب Code الخاصة به.

إضافة بلوك Custom code وتفعيله
- أضف بلوك Custom code إلى أي قسم، أو كبلوك فرعي تحت Cart items.
- حدده وافتح علامة تبويب Code.
- اختر HTML أو React component. تبدأ البلوكات الجديدة بـ HTML افتراضيًا.
- اكتب الكود الخاص بك.
- إذا اخترت React، انقر Compile.
- فعّل “Use custom template”. بالنسبة لهذا البلوك، يعني هذا المفتاح “اعرض الكود المخصص الخاص بي”، وهو معطّل افتراضيًا، فلا يُعرض شيء حتى تفعّله.
- أبقِ مفتاح العين في الشريط الجانبي مفعّلًا ليظل البلوك مرئيًا للمتسوقين.
السلوك
- لا يعرض البلوك شيئًا حتى يكتمل تحميل السلة.
- كما لا يعرض شيئًا عندما تكون عين الشريط الجانبي معطلة، أو “Use custom template” معطلًا، أو الكود فارغًا، أو عندما يفشل React في التجميع أو العرض. ولأن الفشل صامت، افحص بلوكك في المعاينة قبل النشر.
وضع HTML
- وسوم
<script>المضمّنة لا تعمل، وليس لوضع HTML أي وصول إلى SDK أوwindow. - للمنطق، استخدم وضع React أو السكربتات المخصصة مع Cart SDK.
الرموز
%، أو كمية)، جاهزة للإدراج في الترميز:
مثال
وضع React
add-to-cart.
- يقفل المحرر الغلاف على
function CustomCode(props: CustomCodeProps) { … }، وتحرر أنت فقط الجسم بين هذين السطرين. - يجب أن تنقر Compile ثم تفعّل “Use custom template”، قبل أن يظهر البلوك.
- يمكن لمكوّنك استخدام
useStateوuseEffectوuseMemoوuseRefوuseCallback. - بخلاف وضع HTML، يعمل React في سياق الصفحة، لذا يمكنه استدعاء
windowوCart SDK عند توفرهما. - إذا رمى مكوّنك أخطاء وقت التشغيل، لا يعرض البلوك شيئًا ويستمر باقي السلة في العمل.
الخصائص (Props)
$12.50 هي 1250 وليس 12.50. وهي ليست سلاسل نقدية منسّقة مثل رموز HTML.
بنيتا cart وline
cart وline هما نفس الكائنين اللذين يعرضهما SDK في كل مكان آخر، لذا وُثّقا مرة واحدة في مرجع كائن السلة: كل حقل في السلة وفي السطر وفي الحزمة.
أكثر ما ستستخدمه: cart.items وcart.itemCount وcart.totalPrice وline.title وline.quantity وline.finalLinePrice.
ثلاثة أمور خاصة بهذا البلوك:
- لا تُعيَّن
lineإلا في بلوك فرعي لـ Cart items، حيث يُعرض مكوّنك مرة لكل سطر. عند وضعه كقسم، تكونlineقيمتهاnullوتقرأcart.itemsبدلًا منها. - العناصر التابعة للحزم ليست في
cart.items. عندما تُجمَّع الأسطر في حزمة، يظهر السطر المرجعي فقط؛ وتوجد عناصره التابعة فيline.bundle.children. - الأسطر المخفية عبر تحويل الأسطر ليست موجودة أيضًا، رغم أنها لا تزال تُحتسب ضمن
cart.totalPrice.
أمثلة
props.line لمحتوى خاص بكل منتج. يُعرض البلوك مرة لكل سطر، موسومًا بمنتج ذلك السطر ونسخته:
قراءة بيانات الإثراء الوصفية
cart.items حقل metadata: كائن فارغ {} حتى يملأه مثري السلة. بمجرد ملئه، يُفهرَس بمعرّف المثري id ويحتوي على بيانات Storefront لمنتج ذلك السطر أو نسخته:
metadata موجودة دائمًا وتكون افتراضيًا كائنًا فارغًا {} حتى يكتمل الجلب غير المتزامن للمثري (اختبار “لم يُثرَ بعد” هو Object.keys(item.metadata).length === 0). استخدم السلسلة الاختيارية (item.metadata?.enricherId) عند قراءة مفتاح مثرٍ محدد، لأن ذلك المفتاح غائب حتى يكتمل الإثراء.
قراءة رموز الخصم وخصومات الأسطر
cart.discountCodes رموز الخصم المطبقة على السلة، ويسرد discountAllocations لكل سطر الخصومات المطبقة على ذلك السطر تحديدًا:
الموضع والحدود
- المنطقة: أي منطقة (الأعلى أو الوسط أو الأسفل). متاح أيضًا كبلوك فرعي لـ Cart items.
- الحد الأقصى: غير محدود.
- الحالة: السلة الممتلئة والفارغة (كبلوك قسم). كبلوك فرعي لـ Cart items، لا يُعرض إلا عندما تحتوي السلة على أسطر، بنسخة واحدة لكل سطر.
- غير مقفل، لذا يمكنك إزالته أو إخفاؤه.
- لا يوجد قسم Design خاص بالبلوك. نسّق من خلال ترميزك الخاص وCSS المخصص وإعدادات التصميم العامة.