كثير مما يطلبه التجار من SDK متوفر بالفعل كإعداد. قبل كتابة نص برمجي، تحقق مما إذا كانت كتلة سلة، أو الشروط حسب السوق/الدولة/العملة، أو أحد إعدادات السلة يقوم بذلك بالفعل. فهذه تستمر في العمل عبر عمليات إعادة تصميم السلة، بينما قد لا يستمر نصك البرمجي.
نقطة الدخول العامة
كل مقتطف في هذه الوثائق يكتب
window.aftersell.cart بالكامل، بحيث يعمل أي منها بمفرده عند لصقه. كما أن إنشاء اسم مختصر له مرة واحدة (const cart = window.aftersell.cart;) واستخدام cart من ذلك الحين فصاعدًا صالح تمامًا أيضًا، وآمن حتى قبل تحميل السلة. فقط تذكّر تضمين ذلك السطر إذا اختصرت مقتطفًا، لأن cart بمفردها تُلقي الخطأ cart is not defined.التهيئة
حدّد سلوك السلة: متى يُفتح الدُرج، وكيف يتم تنسيق العملة، وما إذا كانت Aftersell تعترض الإضافة إلى السلة.
الأحداث
تفاعل مع ما يحدث: تم تحميل السلة، تمت إضافة عنصر، فُتح الدُرج، تم النقر على الدفع.
الإجراءات
اقرأ السلة وغيّرها: افتحها، أضف عنصرًا، حدّث كمية، اقرأ الحالة الحالية.
الخُطافات
غيّر طريقة عمل السلة نفسها: أخفِ الأسطر أو أعد تسميتها، أعد ترتيبها، أرفق بيانات إضافية، تحكّم في الإضافة إلى السلة.
إذا توقف أحد سكربتاتك عن العمل عند الإضافة إلى السلة، فابدأ من اعتراض الإضافة إلى السلة. فهو يشرح لماذا يتولى Aftersell عملية الإضافة، وكل طريقة لاستثناء نموذج.
أحداث أم إجراءات أم خُطافات؟
الفرق الأهم: الإجراء يغيّر سلة المتسوق الفعلية (وإجماليه)، بينما الخُطاف يغيّر ما يُعرض فقط. إخفاء سطر بخُطاف يُبقيه في السلة وفي الإجمالي؛ أما إزالته بإجراء فتخرجه فعليًا.
كيف ومتى يتم التحميل
- بذرة (stub) صغيرة تنشئ
window.aftersell.cartفورًا، لذا فهي موجودة دائمًا. - تُحمَّل SDK الكاملة بعد ذلك بوقت قصير وتتولى الأمر، مطوّرةً البذرة في مكانها، لذا يستمر المرجع الذي التقطته سابقًا في العمل.
استدعاءات الإعداد: آمنة فورًا
configure(...) و events.on(...) وكل استدعاء hooks.register*. تُخزَّن مؤقتًا قبل الإقلاع وتُعاد بالترتيب بمجرد تحميل SDK. ضعها في أعلى نصك البرمجي.الإجراءات: انتظر ready()
كل شيء ضمن
actions.*. شغّلها داخل ready() أو داخل معالج حدث. إذا استُدعيت مبكرًا جدًا فإنها تحذّر في وحدة التحكم ولا تفعل شيئًا، بأمان: فالإجراءات غير المتزامنة لا تزال تتحقق، لذا لن تنكسر سلسلة .then().ready()
ready() وعدًا يتحقق بمجرد استقرار أول تحميل للسلة. وهي تتحقق عند الفشل كما عند النجاح، لذا لن يترك متسوق على اتصال متقطع نصك البرمجي معلقًا أبدًا. تحقق من getCart() بحثًا عن null بدلًا من افتراض وصول سلة.
استدعاء ready() بعد أن تكون السلة قد حُمّلت بالفعل يتحقق فورًا، لذا فهي آمنة للاستخدام كبوابة عامة تعني “السلة موجودة الآن” في أي مكان في تعليماتك البرمجية.
context
window.aftersell.cart.context بيانات المشتري المعروضة من الخادم، وهي قابلة للقراءة بشكل متزامن، دون الحاجة إلى ready(). استخدمه للتفريع حسب السوق أو الدولة الذي يجب أن يحدث قبل تحميل السلة.
لعرض إعدادات كتلة مختلفة حسب السوق أو الدولة أو العملة، استخدم الشروط في محرر السلة بدلًا من ذلك. لا حاجة إلى نص برمجي. واجهة الشروط الكاملة متوفرة حاليًا في Rewards.
shadowRoot
document.querySelector لا يستطيع رؤية أي شيء داخل الدُرج. للوصول إلى عنصر في السلة، استعلم عن الجذر الظلي:
cart-external-* العامة التي تستخدمها CSS المخصصة. فهذه هي المقابض المدعومة. أما نظائرها cart-internal-* فهي أعمال السلة الداخلية، لذا استعلم عن الخارجية بدلًا منها.
الجذر الظلي لا يكون موجودًا إلا بعد إقلاع السلة، لذا اقرأه داخل ready() أو داخل معالج حدث بدلًا من أعلى نصك البرمجي.
تصحيح الأخطاء
عندما يُلقي نصك البرمجي خطأ
configure و events.on و hooks.register* تحت ذلك السطر لا تعمل أبدًا. تقول السلة ذلك صراحةً:
aftersell-cart-init.js و aftersell-cart-cart-update.js في DevTools. يمكنك فتحها من لوحة Sources وتعيين نقاط توقف مثل أي ملف آخر.
قناة التصحيح
إلى أين تذهب بعد ذلك
التهيئة
كل خيار، مع مثال لكل منها.
الأحداث
كل حدث، ومتى ينطلق، وما الذي يجب تجنبه في المعالج.
الإجراءات
كل إجراء، مع مقتطف لكل منها.
الخُطافات
كل خُطاف، وكيف تتراكب التسجيلات.
كائن السلة
شكل السلة وأسطرها.
حالات الاستخدام
حلول كاملة وقابلة للتشغيل لأكثر الطلبات شيوعًا.