setInternalProperties هي الطريقة التي تخبر بها السلة بأنها شيء واحد.
كيف يعمل التجميع
تمر هذه عبر
setInternalProperties وليس عبر Shopify. إنها طبقة عرض فقط: لا تصل أبدًا إلى properties، ولا تُحفظ أبدًا في Shopify، ولا تظهر أبدًا في الطلب.
الخطوة 1: اعرف ما يكتبه تطبيقك
_) تحمل معرّفًا أو مرجعًا أو اسم الحزمة. شيء مثل _bundle_id أو _bundle_ref أو _parent_id هو الشائع. دوّن المفتاح بدقة، وما إذا كان أحد الأسطر معلَّمًا كمنتج رئيسي.
الخطوة 2: اربطه بالخاصيتين القياسيتين
إذا كان تطبيقك لا يعلّم منتجًا رئيسيًا، فاترك
_aftersell_cart_bundle_role بالكامل. ستختار السلة مرساة لك.ما الذي تحصل عليه
bundle ويعرض الدُرج الحزمة كعنصر واحد:
- تتداخل العناصر التابعة تحت المرساة بدلًا من الظهور كصفوف منفصلة.
- الكمية ذرّية. تغيير كمية الحزمة يوسّع كل عضو معًا، باستخدام نسبة
perAnchorQtyلكل عنصر تابع، لذا فإن حزمة تحتوي على اثنين من أحد المكونات تحافظ على علاقة الاثنين إلى واحد تلك. - الإزالة ذرّية. إزالة الحزمة تزيل كل سطر عضو في طلب واحد، بدلًا من ترك مكونات يتيمة خلفها.
- صف سعر واحد. ما يعرضه يتبع إعداد سعر الحزمة في كتلة Cart items: إجمالي كل الأعضاء، أو سعر المنتج الرئيسي وحده.
كيف تُختار المرساة
- السطر الذي عُيّنت فيه
_aftersell_cart_bundle_roleإلىparent. - وإلا، فالعضو الأعلى سعرًا.
- وإلا، فأول عضو في السلة.
قواعد تستحق المعرفة
- تحتاج الحزمة إلى سطرين على الأقل. السطر الواحد الذي يحمل معرّف حزمة يُترك وشأنه ويُعرض بشكل عادي.
- حزم Shopify الأصلية معالجة بالفعل. الأسطر التي تعلّمها Shopify نفسها كمكوَّنة يتخطاها هذا التجميع وتُكيَّف تلقائيًا. لا تحتاج إلى هذا إلا للتطبيقات التي تضيف أسطرًا منفصلة.
- يعمل المحوّل عند كل عرض. أبقِه خفيفًا وخاليًا من الآثار الجانبية. لا تستدعِ إجراءات أو تُجرِ استدعاء fetch من داخله.
- الدمج تراكمي. خصائصك تندمج مع أي خصائص عيّنها محوّل آخر. عند تعارض حقيقي على نفس المفتاح، يفوز المحوّل المسجَّل أخيرًا.
- يعمل التجميع بعد الإخفاء وإعادة التسمية، وقبل الفرز. لذا فإن السطر الذي تخفيه بـ
setHiddenلا يصبح أبدًا جزءًا من حزمة، والمقارِن يرى المرساة وليس العناصر التابعة.
قراءة الحزمة مرة أخرى
bundle.memberKeys، الذي يحمل key كل عضو بما في ذلك المرساة.
استخدامه لأغراض أخرى
setInternalProperties من أجله، لكن الطبقة قناة عامة لأي بيانات عرض فقط تشتقّها من سطر. أي شيء تضعه هناك يكون قابلًا للقراءة في line.internalProperties وفي كتلة التعليمات البرمجية المخصصة، دون المساس بالسلة الحقيقية:
properties[...] في نموذج المنتج بحيث تصل إلى Shopify أيًا كان من يقوم بالإضافة.
إلى أين تذهب بعد ذلك
registerLineTransform: الخُطاف الذي يمر هذا عبره.- كائن السلة: شكل
bundleوعناصره التابعة. - كتلة Cart items: إعداد سعر الحزمة.