Liquid ცვლადები არის Liquid-ში განსაზღვრული ადგილის მანიშნებლები, რომლებიც ნაცვლდება GraphQL Admin API-დან მიღებული მნიშვნელობებით სამუშაო პროცესის გაშვებისას. ცვლადებს შეუძლია აღწეროს იმ მომხმარებლების, შეკვეთებისა და პროდუქტების ატრიბუტები, რომლებიც ჩართულია შენს სამუშაო პროცესებში, როგორიცაა შეკვეთის ნომერი, შეკვეთის ფასი ან მომხმარებლის სახელი. ცვლადები შეიძლება გამოყენებულ იქნას პირობებში, რათა გააკონტროლო სამუშაო პროცესის ლოგიკა, ან მოქმედებიდან მონაცემების გამოსატანად.
სამუშაო პროცესებში ცვლადების დამატება Liquid-ის გამოყენებით
შენ შეგიძლია დაამატო ცვლადები Liquid-ის გამოყენებით ნებისმიერ ტექსტურ ველში, რომელიც შეიცავს ბმულს ცვლადის დამატება. დააწკაპუნე ბმულს ცვლადის დამატება შესაბამისი ველის ქვემოთ და აირჩიე ცვლადი სიიდან.
ცვლადის დამატების სიაში ცვლადები გაფილტრულია, ამიტომ შენ მხოლოდ იმ ცვლადებს იყენებ, რომლებიც დაბრუნებულია მიმდინარე ნაბიჯამდე არსებული ნაბიჯების (მაგალითად, ტრიგერების) მიერ. მაგალითად, შეკვეთა შეიქმნას ტრიგერი უზრუნველყოფს შეკვეთისა და მაღაზიის რესურსებს Admin API-დან, რომელთა ჩასმაც შესაძლებელია ცვლადების სახით. მას შემდეგ, რაც სიიდან აირჩევ ცვლადს, ის ემატება ტექსტის ველს სწორად ფორმატირებული Liquid-ის სახით.
შენ ასევე შეგიძლია პირდაპირ ტექსტის ველში დაწერო Liquid. მაგალითად, შეგიძლია გამოიყენო ცვლადი {{ order.name }} Shopify-ს ადმინიდან შეკვეთის სტრიქონის საჩვენებლად, როგორიცაა order-123.
რადგან Flow იყენებს Admin API-ს Liquid-ისთვის გამოყენებული მონაცემების დასაბრუნებლად, ცვლადის სინტაქსი იყენებს camel case-ს (აქლემისებური რეგისტრი). Camel case ცვლადების შემთხვევაში პირველი სიტყვა იწყება პატარა ასოთი, ხოლო შემდგომი სიტყვები — დიდი ასოთი, მაგალითად: firstName ან canMarkAsPaid. მაგალითად, პროდუქტის შექმნის თარიღზე წვდომისთვის შეიყვანე {{ product.createdAt }}. თუ შენ იყენებ Liquid-ის სინტაქსს Shopify თემაში, რომელიც არ იყენებს camel case-ს, მაშინ უნდა შეიყვანო {{ product.created_at }}.
პირობითი და განმეორებითი Liquid თეგები
Liquid თეგები შეგიძლია გამოიყენო ცვლადებთან შემდეგი ფუნქციების შესასრულებლად:
პირობითი განაცხადების დაწერა, მაგალითად, იმის დადგენა, არის თუ არა შეკვეთის ჯამური თანხა $100-ზე მეტი.
ობიექტების სიის გავლა (იტერაცია), მაგალითად, შეკვეთაში თითოეული ხაზის ელემენტისთვის მონაცემების გამოტანა.
ამ განაცხადების დასაწერად და ობიექტების გასავლელად (იტერაციისთვის) შეგიძლია გამოიყენო Liquid თეგები.
მაგალითად, შემდეგი Liquid აჩვენებს შეკვეთის ნომერს, თუ შეკვეთის ჯამური თანხა აღემატება $100-ს:
{% if order.totalPriceSet.shopMoney.amount > 100 %}
Order number: {{ order.name }}
{% endif %}
შენ ასევე შეგიძლია გამოიყენო for loop ობიექტების (მაგალითად, შეკვეთის ხაზის ელემენტების) სიის გასავლელად (იტერაციისთვის). მაგალითად, შემდეგი Liquid აჩვენებს შეკვეთაში თითოეული ხაზის ელემენტის სახელს:
{% for li in order.lineItems %}
{{ li.title }}
{% endfor %}
Flow-ს აქვს შემდეგი 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 უდრის 1 საათს.
Flow გთავაზობთ კრიპტოგრაფიულ ფილტრებს ჰეშირებისთვის და ჰეშზე დაფუძნებული შეტყობინების ავთენტიფიკაციის კოდების (HMAC) შესაქმნელად. ეს ფილტრები სასარგებლოა უნიკალური იდენტიფიკატორების, საკონტროლო ჯამების შესაქმნელად ან ისეთ მესამე მხარის სისტემებთან ინტეგრაციისთვის, რომლებიც მოითხოვენ ჰეშის კონკრეტულ ფორმატებს.
ჰეშირების ფილტრები
Shopify Flow მხარს უჭერს შემდეგი ტიპის ჰეშირების ფილტრებს:
blake3 - ქმნის BLAKE3 ჰეშს (რეკომენდებულია ზოგადი გამოყენებისთვის).
ჰეშირების ზოგადი მიზნებისთვის და ახალი იმპლემენტაციებისთვის უნდა გამოიყენო blake3, რადგან ის ძველ ალგორითმებთან შედარებით უკეთეს ეფექტურობასა და უსაფრთხოებას გთავაზობს. თუმცა, მესამე მხარის სისტემებთან თავსებადობისთვის ხელმისაწვდომია sha256, sha1 და md5.
გსურს სამუშაო პროცესში ჩართული მომხმარებლის, შეკვეთისა და პროდუქტისთვის 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 }}.
მცირე მარაგის მქონე პროდუქტისთვის დინამიკური ელფოსტის შეტყობინების დაწერა
შენ გადაწყვიტე, რომ უნდა აცნობო პერსონალის წევრს, როდესაც პროდუქტის მარაგი მცირდება და საჭიროა შეკვეთის განთავსება მარაგის შესავსებად. შენ ქმნი სამუშაო პროცესს, რომელიც იწყება ტრიგერით მარაგის რაოდენობა შეიცვალა და აყენებ პირობას, რომელიც სრულდება, თუ მარაგის წინა რაოდენობა 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 loop) გამოყენებით, რომელიც განმეორებით ასრულებს კოდის ბლოკს. ტექსტურ ველებს, რომლებსაც აქვთ ცვლადების მხარდაჭერა, ასევე აქვთ for ციკლებისა და forloop ობიექტის მხარდაჭერა.
მაგალითად, გსურს შექმნა სამუშაო პროცესი, რომელიც დააბრუნებს შეკვეთაში არსებული ყველა SKU-სა და რაოდენობის სიას. შიდა ელფოსტის გაგზავნის მოქმედების სექციაში შეტყობინება, იყენებ შემდეგ ცვლადებს.
შეკვეთის ინფორმაციის მისაწოდებლად for ციკლის გამოყენების მაგალითი.
შეყვანა
გამოტანა
Order summary:
{% for a in order.lineItems %}
{{a.sku}} ( {{a.quantity}} )
{% endfor %}
დამატებითი ინფორმაციით შეკვეთის ხაზის ელემენტების გამოტანა for ციკლის გამოყენებით
შენ გადაწყვიტე, ელფოსტაში დაამატო მეტი ინფორმაცია, მათ შორის პროდუქტის სახელი, SKU-ები, თითოეული ერთეულის ფასი და მომხმარებლის მიწოდების ინფორმაცია. შიდა ელფოსტის გაგზავნის მოქმედების სექციაში შეტყობინება, იყენებ შემდეგ ცვლადებს.
`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 - შავი
SKU: 8987097979
ფასი (ერთეულზე): $8.49
რაოდენობა: 5
პროდუქტი: Athletic Socks - ლურჯი
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 - შავი
SKU: 8987097979
რთული მონაცემთა ობიექტები Shopify Flow-ში
Flow გაძლევს წვდომის საშუალებას თითქმის ნებისმიერ მონაცემზე, რომელიც არის GraphQL Admin API-ში. ეს მოიცავს რთულ მონაცემთა ობიექტებს, როგორიცაა სიები და ობიექტები. თუმცა, არსებობს გარკვეული შეზღუდვები იმასთან დაკავშირებით, თუ რისი გაკეთება შეგიძლია ამ ობიექტებით. ეს სექცია აღწერს ამ შეზღუდვებს და გთავაზობს მათთან მუშაობის მაგალითებს.
სიების და ობიექტების პირდაპირ გამოძახების ნაცვლად, სიაზე ციკლი უნდა გამოიყენო და ჩართო მხოლოდ ის ველები, რომლებიც გჭირდება.
მაგალითად, {{ order.lineItems }}-ის პირდაპირ გამოძახების ნაცვლად, კონკრეტული ველების გამოსაძახებლად გამოიყენე შემდეგი ფორმატი. ეს მაგალითები მოიცავს ყველა ველს, რომელიც შევიდოდა სიის ან ობიექტის პირდაპირ გამოძახებით. დააკოპირე და ჩასვი ის ველები, რომლებიც გჭირდება.
ტექსტი
{% for li in order.lineItems %}
{% comment %}li.contract - omitted{% endcomment %}