متغيرات Liquid هي عناصر نائبة محددة في Liquid يتم استبدالها بقيم من GraphQL Admin API عند تشغيل سير عمل. ويمكن أن تصف المتغيرات سمات العملاء والطلبات والمنتجات المرتبطة بمسارات عملك، مثل رقم الطلب أو سعر الطلب أو اسم العميل. ويمكن استخدام المتغيرات في الشروط للتحكم في المنطق الداخلي لسير عملك، أو لإخراج البيانات من إجراء.
يمكنك إضافة المتغيرات باستخدام Liquid إلى أي حقل نصي يحتوي على رابط إضافة متغير. انقر على رابط إضافة متغير أسفل الحقل المعني، ثم اختر متغيرًا من القائمة.
تتم تصفية المتغيرات في قائمة إضافة متغير، بحيث لا تستخدم سوى المتغيرات التي يتم إرجاعها بواسطة الخطوات السابقة للخطوة الحالية، مثل المشغلات. على سبيل المثال، يوفر مشغل تم إنشاء الطلب موارد الطلب والمتجر من Admin API والتي يمكن إدراجها كمتغيرات. بعد اختيار متغير من القائمة، تتم إضافته إلى مربع النص بتنسيق Liquid الصحيح.
يمكنك أيضًا كتابة Liquid مباشرةً في الحقل النصي. على سبيل المثال، يمكنك استخدام المتغير {{ order.name }} لعرض سلسلة الطلب من مسؤول Shopify، مثل order-123.
نظرًا لأن Flow يستخدم Admin API لاسترداد البيانات المستخدمة في Liquid، فإن بناء جملة المتغير يستخدم حالة الجمل (camel case). وتبدأ الكلمة الأولى في متغيرات حالة الجمل بحرف صغير، في حين تبدأ الكلمات اللاحقة بحرف كبير، مثل firstName أو canMarkAsPaid. على سبيل المثال، للوصول إلى تاريخ إنشاء منتج، أدخل {{ product.createdAt }}. وإذا استخدمت بناء جملة Liquid في قالب Shopify، والذي لا يستخدم حالة الجمل، فستدخل {{ product.created_at }}.
علامات Liquid الشرطية والتكرارية
يمكن استخدام علامات Liquid مع المتغيرات لأداء الوظائف التالية:
كتابة العبارات الشرطية، مثل تحديد ما إذا كان إجمالي الطلب أكبر من 100 دولار.
التكرار عبر قائمة من الكائنات، مثل إخراج البيانات لكل عنصر في طلب.
يمكنك استخدام علامات Liquid لكتابة هذه العبارات والتكرار عبر الكائنات.
على سبيل المثال، يعرض كود Liquid التالي رقم الطلب إذا كان إجمالي الطلب أكبر من 100 دولار:
{% if order.totalPriceSet.shopMoney.amount > 100 %}
Order number: {{ order.name }}
{% endif %}
يمكنك أيضًا استخدام حلقة for للتكرار عبر قائمة من الكائنات، مثل عناصر طلب. على سبيل المثال، يعرض كود Liquid التالي اسم كل عنصر في الطلب:
{% for li in order.lineItems %}
{{ li.title }}
{% endfor %}
يدعم Flow علامات Liquid الشرطية (أو التحكم في التدفق) التالية:
يمكنك تحويل بيانات المتغير في Liquid باستخدام عوامل التصفية. يدعم Flow جميع عوامل تصفية Liquid مفتوحة المصدر.
على سبيل المثال، يزيل كود Liquid التالي بادئة من اسم الطلب ويُخرج ما تبقى: {{ order.name | remove: "Order-" }}
اعتبارات استخدام متغيرات Liquid في عوامل التصفية
قبل تحويل المتغيرات باستخدام عوامل التصفية، راجع الاعتبارات التالية:
لا يدعم Flow الترميز النقطي المتوفر لبعض عوامل التصفية. على سبيل المثال، يدعم Flow {{ order.lineItems | size }} ولكنه لا يدعم {{ order.lineItems.size }}.
لا يدعم Flow الترميز النقطي للحقول الوصفية. على سبيل المثال، لا يمكنك استخدام {{ order.metafields.custom.hold_note }}. بدلاً من ذلك، يجب التكرار عبر الحقول الوصفية كما هو موضح في الأمثلة.
لا يدعم Flow استخدام الفهارس للوصول إلى عناصر في قائمة. على سبيل المثال، لا يمكنك استخدام {{ order.lineItems[0].title }}. بدلاً من ذلك، يجب التكرار عبر العناصر كما هو موضح في الأمثلة.
عوامل تصفية التاريخ
بالإضافة إلى عوامل تصفية Liquid القياسية، يوفر Flow عوامل تصفية للتاريخ للحصول على تاريخ نسبةً إلى تاريخ آخر لدعم ميزتي مشغّل الوقت المجدول والحصول على البيانات. عوامل التصفية هذه هي: date_minus وdate_plus. على سبيل المثال:
لإرجاع تاريخ بعد يوم واحد في المستقبل: {{ "now" | date_plus: "1 day" }}
لإرجاع تاريخ قبل يوم واحد في الماضي: {{ "now" | date_minus: "1 day" }}
تقبل عوامل التصفية هذه second، وminute، وday، وweek، وmonth، وyear كوحدة مدة، سواءً بصيغة المفرد (مثل second) أو الجمع (مثل seconds). يمكنك أيضًا تقديم الأنواع التالية من الوحدات القابلة للتخصيص:
عدد صحيح يمثل عدد الثواني: {{ "now" | date_minus: 3600 }}، حيث يعادل 3600 ساعة واحدة.
سلسلة مدة ISO8601: {{ "now" | date_minus: "P1Y2D" }}، حيث تعني P1Y2D سنة واحدة ويومين.
عوامل تصفية التشفير
يوفر Flow عوامل تصفية تشفير للتجزئة وإنشاء رموز مصادقة الرسائل المستندة إلى التجزئة (HMAC). تعد عوامل التصفية هذه مفيدة لإنشاء معرّفات فريدة، أو مجاميع اختبارية، أو التكامل مع أنظمة الجهات الخارجية التي تتطلب تنسيقات تجزئة محددة.
عوامل تصفية التجزئة
يدعم Shopify Flow الأنواع التالية من عوامل تصفية التجزئة:
blake3 - تنشئ تجزئة BLAKE3 (موصى بها للاستخدام العام).
لأغراض التجزئة العامة وعمليات التنفيذ الجديدة، يجب استخدام blake3، حيث إنها توفر أداءً وأمانًا فائقين مقارنةً بالخوارزميات الأقدم. ومع ذلك، تتوفر كل من sha256 وsha1 وmd5 للتوافق مع أنظمة الجهات الخارجية.
مثال على الاستخدام:
يُرجع {{ "hello world" | blake3 }} تجزئة BLAKE3 للعبارة "hello world".
عوامل تصفية HMAC
لإنشاء HMAC باستخدام مفتاح سري، استخدم أحد عوامل التصفية المدعومة التالية:
تريد إخراج عناوين URL للعميل والطلب والمنتج المشمولين في سير العمل.
# Output the base Admin URL for your store
https://admin.shopify.com/store/{{ shop.myShopifyDomain | replace: ".myshopify.com", "" }}
# Assign the base Admin url to a variable named base_url:
{%- capture base_url -%}https://admin.shopify.com/store/{{ shop.myShopifyDomain | replace: ".myshopify.com", "" }}{%- endcapture -%}
# Customer from a Customer trigger:
{{ base_url }}/customers/{{ customer.legacyResourceId }}
# Customer without the base_url:
https://admin.shopify.com/store/{{ shop.myShopifyDomain | replace: ".myshopify.com", "" }}/customers/{{ customer.legacyResourceId }}
# Customer from an Order trigger:
{{ base_url }}/customers/{{ order.customer.legacyResourceId }}
# Order:
{{ base_url }}/orders/{{ order.legacyResourceId }}
# Product:
{{ base_url }}/products/{{ product.legacyResourceId }}
# Product Variant:
{{ base_url }}/products/{{ product.legacyResourceId }}/variants/{{ productVariant.legacyResourceId }}
# Example showing a clickable link in HTML, making use of the URL:
<a href="{{ base_url }}/products/{{ product.legacyResourceId }}">{{ product.title }}</a>
تحويل قائمة علامات إلى حقل وصفي
ترغب في تحويل مجموعة من العلامات إلى حقل وصفي عبارة عن قائمة من الحقول النصية ذات السطر الواحد. يمكنك إنشاء سير عمل باستخدام مُشغّل تمت إضافة منتج إلى المتجر، واستخدام إجراء تحديث الحقل الوصفي للمنتج. في قسم القيمة في إجراء تحديث الحقل الوصفي للمنتج، يمكنك إضافة كود Liquid التالي. يفترض هذا المثال أنك تحتاج فقط إلى تعيين القيم مرة واحدة عند إنشاء المنتج، وأن للمنتج علامتان ذواتا صلة: color:red وcolor:orange.
مثال على Liquid لتعيين قائمة من حقل نصي بسطر واحد.
تريد إنشاء سير عمل لإرسال بريد إلكتروني إلى موظف عندما يُنفق عميل أكثر من 500 دولار في طلب. تقوم بإنشاء سير عمل باستخدام مُشغّل تم إنشاء الطلب، وتعيين شرط يتحقق إذا كان إجمالي الطلب أعلى من 500 دولار، ثم تستخدم إجراء إرسال بريد إلكتروني داخلي. في قسم الرسالة من إجراء إرسال بريد إلكتروني داخلي، يمكنك استخدام المتغيرات التالية.
مثال على استخدام المتغيرات لتوفير تفاصيل العميل.
المدخلات
المخرجات
Please send a personal thank you note to {{ order.customer.firstName }} {{ order.customer.lastName }}({{ order.customer.email }}) for placing an order for $ {{ order.totalPriceSet.shopMoney.amount }}.
يُرجى إرسال رسالة شكر شخصية إلى Jeanne Dupont (jeanne@example.com) لإجرائها طلباً بقيمة 763.42 دولاراً.
كتابة رسالة بريد إلكتروني ديناميكية لمنتج مخزونه منخفض
قررت أنك بحاجة إلى إبلاغ أحد أفراد فريق العمل عندما ينخفض مخزون منتج ما وتكون هناك حاجة إلى تقديم طلب للحصول على مزيد من المخزون. تقوم بإنشاء سير عمل يبدأ بمُشغّل تغيرت كمية المخزون، وتقوم بتعيين شرط يتحقق إذا كانت كمية المخزون السابقة أقل من أو تساوي 10. في قسم الرسالة من إجراء إرسال بريد إلكتروني داخلي، يمكنك استخدام المتغيرات التالية.
مثال على استخدام المتغيرات لتوفير تفاصيل العنصر.
المدخلات
المخرجات
Please reorder {{ product.title }}. Email owner@store.com to verify that they've received the purchase order.
يُرجى إعادة طلب High Waist Leggings - Black. أرسل بريداً إلكترونياً إلى owner@example.com للتحقق من أنهم استلموا طلب الشراء.
كتابة رسالة بريد إلكتروني ديناميكية لإشعار فريق العمل بوجود طلب احتيالي
تريد إلغاء الطلبات التي تتمتع بمستوى خطورة عالٍ، ولكنك تفضل أن يقوم فريق عملك بإلغاء الطلب يدوياً. تقوم بإنشاء سير عمل يبدأ بمُشغّل تم إنشاء الطلب، وتعيين شرط يتحقق إذا كان مستوى خطورة الطلب يساوي مستوى عالياً. في قسم الرسالة من إجراء إرسال بريد إلكتروني داخلي، يمكنك استخدام المتغيرات التالية.
مثال على استخدام المتغيرات لتوفير معلومات عن طلب احتيالي.
المدخلات
المخرجات
Our Shopify store has received an order with a high risk of fraud. We would like to cancel this order right away, before it is sent to production:
{{ order.name }}
{{ order.billingAddress.lastName }}, {{ order.billingAddress.firstName }}
{{ order.email }}
Please confirm the new order status. Thanks!
تلقى متجر Shopify الخاص بنا طلباً ينطوي على مخاطر احتيال عالية. نود إلغاء هذا الطلب على الفور، قبل إرساله إلى الإنتاج:
#1001
Dupont, Jeanne
jeanne@example.com
يُرجى تأكيد حالة الطلب الجديدة. شكرًا لك!
إخراج بنود طلب باستخدام حلقة for
عند استلام طلب، قد يكون من المفيد إرسال رسالة تحتوي على المنتجات المطلوبة. يمكنك القيام بذلك باستخدام حلقة for، التي تنفذ كتلة من التعليمات البرمجية بشكل متكرر. الحقول النصية التي تدعم المتغيرات تدعم أيضاً حلقات for وكائن forloop.
على سبيل المثال، تريد إنشاء سير عمل يُرجع قائمة بجميع وحدات حفظ المخزون (SKUs) والكميات في أحد الطلبات. في قسم الرسالة من إجراء إرسال بريد إلكتروني داخلي، يمكنك استخدام المتغيرات التالية.
مثال على استخدام حلقة for لتوفير معلومات الطلب.
المدخلات
المخرجات
Order summary:
{% for a in order.lineItems %}
{{a.sku}} ( {{a.quantity}} )
{% endfor %}
إخراج بنود طلب باستخدام حلقة for مع معلومات إضافية
قررت إضافة المزيد من المعلومات إلى البريد الإلكتروني، بما في ذلك اسم المنتج ووحدات حفظ المخزون (SKUs) وسعر العنصر ومعلومات شحن العميل. في قسم الرسالة من إجراء إرسال بريد إلكتروني داخلي، يمكنك استخدام المتغيرات التالية.
مثال على استخدام حلقة for لتوفير معلومات أشمل للطلب.
المدخلات
المخرجات
Order summary:
{% for a in order.lineItems %}
Product: {{a.title}}
SKU: {{a.sku}}
Price (per unit): ${{a.originalUnitPriceSet.shopMoney.amount}}
Quantity: {{a.quantity}}
{% endfor %}
ملخص الطلب:
المنتج: High Waist Leggings - Black
وحدة حفظ المخزون (SKU): 8987097979
السعر (للوحدة): 8.49 دولارات
الكمية: 5
المنتج: Athletic Socks - Blue
وحدة حفظ المخزون (SKU): 888998898B
السعر (للوحدة): 5.61 دولارات
الكمية: 2
إخراج بعض البنود من خلال الجمع بين حلقة for وعبارة if
تحتاج إلى تتبّع العناصر المبيعة والمُورّدة من قِبل مورّد معين. في قسم الرسالة من إجراء إرسال بريد إلكتروني داخلي، تستخدم المتغيرات التالية وتُدرج عبارة if في حلقة for الخاصة بك.
مثال على استخدام حلقة for وعبارة if لتوفير معلومات الطلب لمورّدين محددين.
المدخلات
المخرجات
Acme product sold:
{% for x in order.lineItems %}
{% if x.vendor == 'acme-vendor' %}
Product name: {{x.title}}
SKU: {{x.sku}}
{% endif %}
{% endfor %}
بيع منتج Acme:
اسم المنتج: High Waist Leggings - Black
وحدة حفظ المخزون (SKU): 8987097979
كائنات البيانات المعقدة في Shopify Flow
يتيح لك تطبيق Flow الوصول إلى أي بيانات تقريبًا موجودة في GraphQL Admin API. يشمل ذلك كائنات البيانات المعقدة، مثل القوائم والكائنات. ومع ذلك، توجد بعض القيود على ما يمكنك فعله بهذه الكائنات. يوضح هذا القسم هذه القيود ويقدم أمثلة على كيفية التعامل معها.
بدلاً من استدعاء القوائم والكائنات بشكل مباشر، يجب عليك التكرار عبر القائمة وتضمين الحقول التي تريدها فقط.
على سبيل المثال، بدلاً من استدعاء {{ order.lineItems }} بشكل مباشر، استخدم التنسيق التالي لاستدعاء حقول محددة. تتضمن هذه الأمثلة جميع الحقول التي سيتم تضمينها عن طريق استدعاء القائمة أو الكائن مباشرةً. انسخ الحقول التي تحتاجها والصقها.
نص
{% for li in order.lineItems %}
{% comment %}li.contract - omitted{% endcomment %}