משתני Liquid הם מצייני מקום המוגדרים ב-Liquid שמוחלפים בערכים מתוך GraphQL Admin API כאשר זרימת עבודה מופעלת. המשתנים יכולים לתאר את המאפיינים של הלקוחות, ההזמנות והמוצרים שמעורבים בזרימות העבודה שלך, כגון מספר ההזמנה, מחיר ההזמנה או שם הלקוח. אפשר להשתמש במשתנים בתנאים כדי לשלוט בלוגיקה של זרימת העבודה שלך, או כדי להפיק נתונים מתוך פעולה.
אפשר להוסיף משתנים באמצעות Liquid לכל שדה טקסט שכולל את הקישור הוספת משתנה. יש ללחוץ על הקישור הוספת משתנה מתחת לשדה הרלוונטי, ולאחר מכן לבחור משתנה מתוך הרשימה.
המשתנים ברשימה הוספת משתנה מסוננים, כך שהשימוש יהיה רק במשתנים המוחזרים משלבים שקודמים לשלב הנוכחי, כמו טריגרים. לדוגמה, הטריגר הזמנה נוצרה (Order Created) מספק משאבי הזמנה וחנות מתוך Admin API שניתן להוסיף כמשתנים. לאחר בחירת משתנה מהרשימה, הוא יתווסף אל תיבת הטקסט בתור Liquid המעוצב כראוי.
אפשר גם לכתוב Liquid ישירות בשדה הטקסט. לדוגמה, אפשר להשתמש במשתנה {{ order.name }} כדי להציג את מחרוזת ההזמנה מתוך מנהל המערכת של Shopify, כגון order-123.
מכיוון שב-Flow נעשה שימוש ב-Admin API כדי לאחזר את הנתונים המשמשים עבור Liquid, תחביר המשתנים משתמש באותיות גמל (camel case). במשתנים עם אותיות גמל, המילה הראשונה מתחילה באות קטנה (lowercase) ומילים עוקבות מתחילות באות רישית (uppercase), כגון 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 לא תומך בשיטת הרישום עם נקודה (dot notation) שזמינה עבור חלק מהמסננים. לדוגמה, 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 שווה ערך לשעה אחת.
מערכת Flow מספקת מסננים קריפטוגרפיים עבור גיבוב (hashing) ויצירת קודי אימות הודעות מבוססי-גיבוב (HMAC). מסננים אלה שימושיים ליצירת מזהים ייחודיים, סיכומי ביקורת (checksums), או לשילוב עם מערכות צד שלישי שדורשות פורמטים ספציפיים של גיבוב.
למטרות גיבוב כלליות ולהטמעות חדשות, מומלץ להשתמש ב-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$ על הזמנה. עליך ליצור זרימת עבודה באמצעות הטריגר נוצרה הזמנה, להגדיר תנאי שמוגדר כנכון (true) אם סך ההזמנה גבוה מ-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 כדי לוודא שקיבלו את הזמנת הרכש.
כתיבת הודעת דוא"ל דינמית כדי להודיע לצוות על הזמנת הונאה
ברצונך לבטל הזמנות ברמת סיכון גבוהה, אך ההעדפה היא שהצוות שלך יבטל את ההזמנה באופן ידני. עליך ליצור זרימת עבודה שמתחילה בטריגר נוצרה הזמנה, ולהגדיר תנאי שמוגדר כנכון אם רמת הסיכון של ההזמנה שווה ל'גבוהה' (high). במקטע הודעה של הפעולה שליחת דוא"ל פנימי, עליך להשתמש במשתנים הבאים.
דוגמה לשימוש במשתנים כדי לספק מידע על הזמנת הונאה.
קלט
פלט
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 loop), אשר מבצעת בלוק קוד באופן חוזר ונשנה. שדות טקסט שתומכים במשתנים, תומכים גם ב-לולאות for ובאובייקט forloop.
לדוגמה, ברצונך ליצור זרימת עבודה המחזירה רשימה של כל המק"טים והכמויות בהזמנה. במקטע הודעה של הפעולה שליחת דוא"ל פנימי, עליך להשתמש במשתנים הבאים.
דוגמה לשימוש בלולאת for כדי לספק מידע על הזמנה.
קלט
פלט
Order summary:
{% for a in order.lineItems %}
{{a.sku}} ( {{a.quantity}} )
{% endfor %}
הצגת פלט של פריטי השורה עבור הזמנה באמצעות לולאת for עם מידע נוסף
החלטת להוסיף מידע נוסף לדוא"ל, כולל שם המוצר, מק"טים, מחיר לפריט ופרטי השילוח של הלקוח. במקטע הודעה של הפעולה שליחת דוא"ל פנימי, עליך להשתמש במשתנים הבאים.
דוגמה לשימוש בלולאת 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
מק"ט: 8987097979
מחיר (ליחידה): 8.49$
כמות: 5
מוצר: Athletic Socks - Blue
מק"ט: 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
מק"ט: 8987097979
אובייקטי נתונים מורכבים ב-Shopify Flow
Flow מאפשר לך לגשת לכמעט כל נתון שנמצא ב-GraphQL Admin API. זה כולל אובייקטי נתונים מורכבים, כמו רשימות ואובייקטים. עם זאת, קיימות מספר מגבלות לגבי מה שניתן לעשות עם אובייקטים אלה. המקטע הזה מתאר את המגבלות הללו ומספק דוגמאות כיצד לעבוד איתם.
במקום לקרוא לרשימות ולאובייקטים באופן ישיר, עליך לעבור על הרשימה בלולאה ולכלול רק את השדות הרצויים לך.
לדוגמה, במקום לקרוא ל-{{ order.lineItems }} באופן ישיר, השתמש בפורמט הבא כדי לקרוא לשדות ספציפיים. דוגמאות אלה כוללות את כל השדות שהיו נכללים אילו קראת לרשימה או לאובייקט באופן ישיר. עליך להעתיק ולהדביק את השדות הנדרשים לך.
טקסט
{% for li in order.lineItems %}
{% comment %}li.contract - omitted{% endcomment %}