window.aftersell.cart.hooks.
الخطاف يغيّر ما يراه المتسوق؛ والإجراء يغيّر ما هو في سلته. إخفاء بند هدية مجانية بتحويل يبقيه في السلة وفي الإجمالي. أما إزالته بـ
removeItem فتخرجه فعليًا.الخطافات استدعاءات إعداد، لذا يمكن تسجيلها بأمان في أعلى سكربتك تمامًا، دون حاجة لانتظار
ready(). سجّلها في سكربت Initialization الخاص بسلتك (راجع السكربتات المخصصة).كيف يعمل التسجيل
register*. تستدعيها بدالتك؛ وتُرجع دالة إلغاء تسجيل يمكنك استدعاؤها لإزالة دالتك.
الخطاف الذي يرمي خطأً، أو الذي ليس دالة، يُتخطى؛ وتستمر البقية في العمل، وتواصل السلة عملها. لا يمكن لتكامل واحد معطوب أن يُسقط الإضافة إلى السلة أو منتقي الاشتراكات أو الترتيب.
الوجه الآخر هو أن خطافك المعطوب يفشل بصمت: لا يصل شيء إلى وحدة تحكم المتصفح. راجع تصحيح الأخطاء لمعرفة أين تظهر تلك الإخفاقات فعلًا.
registerLineTransform
registerLineTransform(fn) لكل بند سلة قبل عرضه. استخدمه لإخفاء بند أو تغيير طريقة قراءته، دون المساس بما هو موجود فعليًا في سلة المتسوق.
تستقبل الدالة بندًا للقراءة فقط بالإضافة إلى دوال ضبط (setters). وتُرجع دالة إلغاء تسجيل.
setInternalProperties هي دالة الضبط الكامنة خلف تجميع الحزم: ختم خصائص الحزمة القياسية على كل بند هو الطريقة التي تجعل بنود السلة المنفصلة لتطبيق طرف ثالث تُعرض كعنصر واحد. راجع جمع بنود حزمة من تطبيق آخر.
registerLineComparator
Array.prototype.sort. يعمل بعد الإخفاء وإعادة التسمية، لذا يرى البنود المحوَّلة.
0 للأزواج التي ليس لديك رأي فيها. هذا ما يسلّم القرار إلى المقارِن التالي بدلًا من فرض ترتيب عليه.
استخدمه من أجل: رفع الاشتراكات أو العناصر عالية القيمة إلى الأعلى، وإنزال الهدايا المجانية والإضافات إلى الأسفل، وإبقاء منتج مموَّل في المقدمة.
registerCartEnricher
registerCartEnricher(registration) بيانات إضافية للمنتج أو المتغير من Shopify Storefront API ويرفقها بكل بند سلة مطابق في line.metadata[id]. استخدمه لإظهار الحقول الوصفية (metafields) أو الوسوم أو أي شيء آخر تكشفه Storefront API، دون أي تعديل برمجي مطلوب من Aftersell.
يُرجع دالة إلغاء تسجيل.
كلما حُمِّلت السلة أو تغيّرت، يجلب Aftersell مقطعك لكل منتج أو متغير في السلة ويرفق النتيجة. الجلب غير حاجب: تُعرض السلة فورًا ويُعاد إصدار
cart_updated بمجرد وصول البيانات. المقطع البطيء أو الفاشل لا يؤخر السلة أو يعطّلها أبدًا.
line.metadata.pricing قيمتها undefined حتى يُحل أول جلب، وmetadata نفسها تكون افتراضيًا {}.
استخدمه من أجل: سحب حقل وصفي إلى كل بند (تقدير موعد التسليم، قائمة مكونات، علامة “يُشحن منفصلًا”، مضاعِف ولاء) وعرضه عبر بلوك Custom code. راجع عرض بيانات الحقول الوصفية على بنود السلة.
تتعايش عدة مُثريات بسلام، لأن كل
id هو نطاق أسماء مستقل، لذا لا تتصادم بياناتها أبدًا.registerSubscriptionOptionsTransform
options.filter(...) ويحذف بصمت خطط كل التطبيقات الأخرى في طريقه. مع دوال الضبط لا يمكنك سوى وصف تعديلاتك أنت: تُدمج التعديلات لكل خطة ولكل حقل، ويفوز آخر كاتب في التعارض الحقيقي على الحقل نفسه من الخطة نفسها. التحويل الذي يرمي خطأً لا يساهم بشيء، وتظل البقية سارية.
كل تحويل يرى الخيارات الأصلية، لا نسخة نصف معدَّلة، لذا لا يغيّر ترتيب التسجيل ما تقرؤه.
يبقى ترتيب الخطط كما أرجعته Shopify، لذا لا يمكن للتحويل إعادة الترتيب. للتحكم في الخطة المعروضة أولًا (والتي يشترك فيها زر الترقية من الشراء لمرة واحدة)، استخدم
registerDefaultSubscriptionOptionSelector، الذي يرفع اختياره إلى المقدمة.discountPercent، لأن خطة لن تحترمها Shopify عند إتمام الشراء ستكون مجرد وعد زائف في المنتقي.
registerDefaultSubscriptionOptionSelector
id خطة، أو null للتنازل عن القرار.
null للبنود التي لا تهمك بدلًا من التخمين. هذا يسلّم القرار إلى المنتقي التالي بدلًا من تجاوزه. المعرّف الذي لا يطابق أي خطة على البند يُعامل مثل null ويتنازل أيضًا، لذا لا يمكن لمعرّف قديم أن يفرغ المنتقي.
تستقبل دالتك (options, context)، وهو نفس context الذي يستقبله تحويل الخيارات.
registerSkipAddToCartRule
true للسماح لنموذج منتج محدد بالإضافة إلى السلة بشكل عادي، متجاوزًا Aftersell كليًا. هذا مفيد لنموذج يحتاج إلى إعادة توجيه أو معالجة خاصة به.
true يعني التجاوز، لذا أبقِ قاعدتك ضيقة، بحيث تطابق النماذج المحددة التي تملكها، وأرجِع false لكل ما عداها. تُقيَّم القواعد بترتيب التسجيل وتتوقف عند أول true، لذا لا تضع آثارًا جانبية في قاعدة: يعتمد تشغيل قاعدتك أصلًا على ما سُجِّل قبلها.
استخدمه من أجل: نموذج طلب مسبق أو عرض سعر يحتاج إلى إعادة توجيه خاصة به، أو تدفق مخصص لتطبيق اشتراكات، أو زر “buy it now” ينبغي أن ينتقل مباشرة إلى إتمام الشراء. لإيقاف الاعتراض للصفحة كلها بدلًا من ذلك، استخدم skip_add_to_cart_interceptor، لكن فضّل هذا الخطاف، المحدود بالنماذج التي تسمّيها.
إلى أين تذهب بعد ذلك
- كائن السلة: شكل البند الذي يستقبله التحويل.
- الأحداث: كل ما يمكنك الاشتراك فيه.
- الإجراءات: قراءة السلة وتغييرها.
- حالات الاستخدام: حلول كاملة للطلبات الشائعة.