Liquid mainīgie ir valodā Liquid definēti vietturi, kas darbplūsmas izpildes laikā tiek aizstāti ar vērtībām no GraphQL Admin API. Mainīgie var aprakstīt darbplūsmās iesaistīto klientu, pasūtījumu un produktu atribūtus, piemēram, pasūtījuma numuru, pasūtījuma cenu vai klienta vārdu un uzvārdu. Mainīgos var izmantot nosacījumos, lai kontrolētu darbplūsmas loģiku, vai lai izvadītu datus no darbības.
Mainīgo pievienošana darbplūsmās, izmantojot Liquid
Tu vari pievienot mainīgos, izmantojot Liquid, jebkuram teksta laukam, kurā ir saite Pievienot mainīgo. Noklikšķini uz saites Pievienot mainīgo zem attiecīgā lauka un pēc tam izvēlies mainīgo no saraksta.
Mainīgie sarakstā Pievienot mainīgo ir filtrēti, lai tu izmantotu tikai tos mainīgos, kurus atgriež pirms pašreizējā sola veiktie soļi, piemēram, trigeri. Piemēram, trigeris Pasūtījums izveidots (Order Created) nodrošina pasūtījuma un veikala resursus no Admin API, ko var ievietot kā mainīgos. Kad izvēlies mainīgo no saraksta, tas tiek pievienots tekstlodziņam kā atbilstoši formatēts Liquid kods.
Tu vari arī rakstīt Liquid kodu tieši teksta laukā. Piemēram, vari izmantot mainīgo {{ order.name }}, lai parādītu pasūtījuma virkni no Shopify administrēšanas paneļa, piemēram, order-123.
Tā kā Flow izmanto Admin API, lai izgūtu datus Liquid kodam, mainīgo sintaksē tiek izmantots kameļraksts (camel case). Kameļraksta mainīgajos pirmais vārds sākas ar mazo burtu, bet nākamie vārdi sākas ar lielo burtu, piemēram, firstName vai canMarkAsPaid. Piemēram, lai piekļūtu datumam, kad produkts tika izveidots, ievadi {{ product.createdAt }}. Ja izmanto Liquid sintaksi Shopify tēmā, kas neizmanto kameļrakstu, tad jāievada {{ product.created_at }}.
Nosacījuma un iterācijas Liquid tagi
Liquid tagus var izmantot kopā ar mainīgajiem, lai veiktu šādas funkcijas:
Rakstīt nosacījuma priekšrakstus, piemēram, lai noteiktu, vai pasūtījuma kopsumma ir lielāka par 100 $.
Iterēt cauri objektu sarakstam, piemēram, izvadot datus par katru rindas vienumu pasūtījumā.
Tu vari izmantot Liquid tagus, lai rakstītu šos priekšrakstus un iterētu cauri objektiem.
Piemēram, šis Liquid kods parāda pasūtījuma numuru, ja pasūtījuma kopsumma ir lielāka par 100 $:
{% if order.totalPriceSet.shopMoney.amount > 100 %}
Order number: {{ order.name }}
{% endif %}
Tu vari izmantot arī for ciklu, lai iterētu cauri objektu sarakstam, piemēram, pasūtījuma rindas vienumiem. Piemēram, šis Liquid kods parāda katra pasūtījuma rindas vienuma nosaukumu:
{% for li in order.lineItems %}
{{ li.title }}
{% endfor %}
Flow atbalsta šādus Liquid nosacījuma (jeb vadības plūsmas) tagus:
Tu vari pārveidot mainīgo datus Liquid kodā, izmantojot filtrus. Flow atbalsta visus atvērtā pirmkoda Liquid filtrus.
Piemēram, šis Liquid kods noņem prefiksu no pasūtījuma nosaukuma un izvada to, kas paliek: {{ order.name | remove: "Order-" }}
Lietas, kas jāņem vērā, izmantojot Liquid mainīgos filtros
Pirms mainīgo pārveidošanas ar filtriem ņem vērā tālāk norādīto:
Flow neatbalsta punktu pierakstu, kas ir pieejams dažiem filtriem. Piemēram, Flow atbalsta {{ order.lineItems | size }}, bet neatbalsta {{ order.lineItems.size }}.
Flow neatbalsta punktu pierakstu metalaukiem. Piemēram, tu nevari izmantot {{ order.metafields.custom.hold_note }}. Tā vietā tev ir jāveido cikls pāri metalaukiem, kā norādīts piemēros.
Flow neatbalsta indeksu izmantošanu, lai piekļūtu saraksta vienumiem. Piemēram, tu nevari izmantot {{ order.lineItems[0].title }}. Tā vietā tev ir jāveido cikls pāri rindas vienumiem, kā norādīts piemēros.
Datumu filtri
Papildus standarta Liquid filtriem Flow nodrošina datumu filtrus, lai iegūtu datumu attiecībā pret citu datumu, atbalstot trigeri Ieplānotais laiks (Scheduled time) un funkcijas Iegūt datus (Get data). Šie filtri ir: date_minus un date_plus. Piemēram:
Lai atgrieztu datumu par vienu dienu nākotnē: {{ "now" | date_plus: "1 day" }}
Lai atgrieztu datumu par vienu dienu pagātnē: {{ "now" | date_minus: "1 day" }}
Šie filtri kā ilguma vienību pieņem second, minute, day, week, month un year gan vienskaitlī (piemēram, second), gan daudzskaitlī (piemēram, seconds). Tu vari norādīt arī šādu veidu pielāgojamās vienības:
Vesels skaitlis, kas atspoguļo sekunžu skaitu: {{ "now" | date_minus: 3600 }}, kur 3600 ir vienāds ar 1 stundu.
ISO8601 ilguma virkne: {{ "now" | date_minus: "P1Y2D" }}, kur P1Y2D nozīmē 1 gadu un 2 dienas.
Kriptogrāfijas filtri
Flow nodrošina kriptogrāfijas filtrus jaukšanai (hashing) un jaukšanā balstītu ziņojumu autentifikācijas kodu (HMAC) izveidei. Šie filtri ir noderīgi, lai izveidotu unikālus identifikatorus, kontrolsummas vai integrēšanai ar trešās puses sistēmām, kurām nepieciešami konkrēti jaucējkodu formāti.
Jaukšanas filtri
Shopify Flow atbalsta šādu veidu jaukšanas filtrus:
blake3 – izveido BLAKE3 jaucējkodu (ieteicams vispārējai lietošanai).
Vispārīgiem jaukšanas nolūkiem un jaunām ieviešanām ieteicams izmantot blake3, jo tas nodrošina labāku veiktspēju un drošību nekā vecāki algoritmi. Tomēr sha256, sha1 un md5 ir pieejami saderībai ar trešās puses sistēmām.
Tu vēlies izvadīt vietrāžus URL klientam, pasūtījumam un produktam, kas iesaistīti darbplūsmā.
# 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>
Tagu saraksta konvertēšana par metalauku
Tu vēlies konvertēt tagu kopu par metalauku, kas ir vienas rindas teksta lauku saraksts. Tu izveido darbplūsmu, izmantojot trigeri Product added to store (Produkts pievienots veikalam), un izmanto darbību Update product metafield (Atjaunināt produkta metalauku). Darbības Update product metafield sadaļā Value (Vērtība) tu pievieno šo Liquid kodu. Šajā piemērā ir pieņemts, ka vērtības jāiestata tikai vienreiz, kad produkts tiek izveidots, un ka produktam ir divi atbilstoši tagi: color:red un color:orange.
Liquid piemērs, lai iestatītu vienas rindas teksta lauka sarakstu.
Tu vēlies izveidot darbplūsmu, lai nosūtītu e-pasta vēstuli darbiniekam, kad klients pasūtījumā iztērē vairāk nekā 500 $. Tu izveido darbplūsmu, izmantojot trigeri Order created (Pasūtījums izveidots), iestati nosacījumu, kas ir patiess, ja pasūtījuma kopsumma pārsniedz 500 $, un izmanto darbību Send internal email (Nosūtīt iekšēju e-pastu). Darbības Send internal email sadaļā Message (Ziņojums) tu izmanto šos mainīgos.
Mainīgo izmantošanas piemērs, lai norādītu klienta informāciju.
Ievade
Izvade
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 }}.
Dinamiska e-pasta ziņojuma rakstīšana produktam ar mazu krājumu daudzumu
Tu nolem, ka personāla loceklis jāinformē, kad produkta krājumi tuvojas beigām un ir jāveic pasūtījums krājumu papildināšanai. Tu izveido darbplūsmu, kas sākas ar trigeri Inventory quantity changed (Krājumu daudzums mainīts), un iestati nosacījumu, kas ir patiess, ja iepriekšējais krājumu daudzums ir mazāks vai vienāds ar 10. Darbības Send internal email (Nosūtīt iekšēju e-pastu) sadaļā Message (Ziņojums) tu izmanto šos mainīgos.
Mainīgo izmantošanas piemērs, lai norādītu vienuma informāciju.
Ievade
Izvade
Please reorder {{ product.title }}. Email owner@store.com to verify that they've received the purchase order.
Lūdzu, pasūti atkārtoti preci High Waist Leggings - Black. Sūti e-pastu uz owner@example.com, lai apstiprinātu, ka viņi ir saņēmuši pirkuma pasūtījumu.
Dinamiska e-pasta ziņojuma rakstīšana, lai informētu personālu par krāpniecisku pasūtījumu
Tu vēlies atcelt pasūtījumus, kuriem ir augsts riska līmenis, bet dod priekšroku tam, lai personāls atceltu pasūtījumu manuāli. Tu izveido darbplūsmu, kas sākas ar trigeri Order created (Pasūtījums izveidots), un iestati nosacījumu, kas ir patiess, ja pasūtījuma riska līmenis ir augsts. Darbības Send internal email (Nosūtīt iekšēju e-pastu) sadaļā Message (Ziņojums) tu izmanto šos mainīgos.
Mainīgo izmantošanas piemērs, lai sniegtu informāciju par krāpniecisku pasūtījumu.
Ievade
Izvade
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!
Mūsu Shopify veikals ir saņēmis pasūtījumu ar augstu krāpšanas risku. Mēs vēlamies nekavējoties atcelt šo pasūtījumu, pirms tas tiek nosūtīts ražošanai:
#1001
Dupont, Jeanne
jeanne@example.com
Lūdzu, apstipriniet jauno pasūtījuma statusu. Paldies!
Pasūtījuma rindas vienumu izvade, izmantojot ciklu for
Saņemot pasūtījumu, var būt noderīgi nosūtīt ziņojumu, kas satur pasūtītos produktus. To var izdarīt, izmantojot for loop (ciklu for), kas atkārtoti izpilda koda bloku. Teksta lauki, kas atbalsta mainīgos, atbalsta arī ciklus for un objektu forloop.
Piemēram, tu vēlies izveidot darbplūsmu, kas atgriež sarakstu ar visiem pasūtījuma SKU un daudzumiem. Darbības Send internal email (Nosūtīt iekšēju e-pastu) sadaļā Message (Ziņojums) tu izmanto šos mainīgos.
Cikla for izmantošanas piemērs, lai sniegtu informāciju par pasūtījumu.
Ievade
Izvade
Order summary:
{% for a in order.lineItems %}
{{a.sku}} ( {{a.quantity}} )
{% endfor %}
Pasūtījuma rindas vienumu izvade ar papildinformāciju, izmantojot ciklu for
Tu nolem pievienot e-pastam vairāk informācijas, tostarp produkta nosaukumu, SKU, cenu par vienumu un klienta piegādes informāciju. Darbības Send internal email (Nosūtīt iekšēju e-pastu) sadaļā Message (Ziņojums) tu izmanto šos mainīgos.
Piemērs par "for" cikla izmantošanu, lai sniegtu plašāku informāciju par pasūtījumu.
Ievade
Izvade
Order summary:
{% for a in order.lineItems %}
Product: {{a.title}}
SKU: {{a.sku}}
Price (per unit): ${{a.originalUnitPriceSet.shopMoney.amount}}
Quantity: {{a.quantity}}
{% endfor %}
Pasūtījuma kopsavilkums:
Produkts: High Waist Leggings - Black
SKU: 8987097979
Cena (par vienību): $8.49
Daudzums: 5
Produkts: Athletic Socks - Blue
SKU: 888998898B
Cena (par vienību): $5.61
Daudzums: 2
Izvadi atsevišķus rindas vienumus, apvienojot "for" ciklu ar "if" priekšrakstu
Tev jāizseko pārdotie vienumi, kurus nodrošina konkrēts piegādātājs. Darbības Send internal email sadaļā Message izmanto šādus mainīgos un savā for ciklā iekļauj if priekšrakstu.
Piemērs par "for" cikla un "if" priekšraksta izmantošanu, lai sniegtu informāciju par pasūtījumu konkrētiem piegādātājiem.
Ievade
Izvade
Acme product sold:
{% for x in order.lineItems %}
{% if x.vendor == 'acme-vendor' %}
Product name: {{x.title}}
SKU: {{x.sku}}
{% endif %}
{% endfor %}
Pārdots Acme produkts:
Produkta nosaukums: High Waist Leggings - Black
SKU: 8987097979
Kompleksi datu objekti platformā Shopify Flow
Flow ļauj piekļūt gandrīz jebkuriem datiem, kas atrodas GraphQL Admin API. Tas ietver kompleksus datu objektus, piemēram, sarakstus un objektus. Tomēr ir daži ierobežojumi tam, ko tu vari darīt ar šiem objektiem. Šajā sadaļā ir aprakstīti šie ierobežojumi un sniegti piemēri, kā ar tiem strādāt.
Tā vietā, lai izsauktu sarakstus un objektus tieši, tev jāveido saraksta cikls un jāiekļauj tikai vēlamie lauki.
Piemēram, tā vietā, lai tieši izsauktu {{ order.lineItems }}, izmanto tālāk norādīto formātu, lai izsauktu konkrētus laukus. Šie piemēri ietver visus laukus, kas tiktu iekļauti, tieši izsaucot sarakstu vai objektu. Nokopē un ielīmē laukus, kas tev nepieciešami.
Teksts
{% for li in order.lineItems %}
{% comment %}li.contract - omitted{% endcomment %}