Zmienne to zdefiniowane w Liquid symbole zastępcze, które są zastępowane wartościami z GraphQL Admin API po uruchomieniu workflow. Zmienne mogą opisywać atrybuty klientów, zamówień i produktów objętych procesami workflow, na przykład nr zamówienia, cenę zamówienia, nazwę klienta itd. Zmienne mogą być używane w warunkach do kontrolowania logiki w workflow lub do wyprowadzania danych z czynności.
Możesz dodać zmienne za pomocą Liquid do dowolnego pola tekstowego zawierającego link Dodaj zmienną. Kliknij link Dodaj zmienną poniżej odpowiedniego pola, a następnie wybierz zmienną z listy.
Zmienne na liście Dodaj zmienną są filtrowane, więc używasz tylko zmiennych zwracanych w krokach poprzedzających bieżący krok, takie jak wyzwalacze. Na przykład wyzwalacz Zamówienie utworzone udostępnia zasoby dotyczące zamówień i sklepu z API Admin, które można wstawić jako zmienne. Po wybraniu zmiennej z listy jest ona dodawana do pola tekstowego jako poprawnie sformatowany kod Liquid.
Możesz także napisać kod Liquid bezpośrednio w bloku tekstowym. Na przykład możesz użyć zmiennej {{ order.name }} w celu wyświetlenia ciągu znaków zamówienia wyświetlanego w panelu administracyjnym Shopify, np. zamówienie-123.
Ponieważ aplikacja Flow używa Admin API do pobierania danych używanych w kodzie Liquid, składnia zmiennej stosuje system notacji „camelCase”. Na przykład, aby uzyskać dostęp do daty utworzenia produktu, wprowadź {{ product.createdAt }}. Jeśli używasz składni Liquid w szablonie Shopify, wprowadź {{ product.created_at }}.
Tagi warunkowe i tagi iteracji Liquid
Tagów Liquid można używać do wykonania poniższych czynności:
Napisanie instrukcji warunkowych, takich jak ustalenie, czy suma zamówienia jest większa niż 100 USD
Iteracja przez listę obiektów, np. wyprowadzanie danych dla każdej pozycji w zamówieniu
Tagi Liquid można wykorzystywać na potrzeby pisania takich instrukcji i iteracji przez obiekty.
Na przykład poniższy kod Liquid wyświetla numer zamówienia, jeśli suma zamówienia jest większa niż 100 USD:
{% if order.totalPriceSet.shopMoney.amount > 100 %}
Order number: {{ order.name }}
{% endif %}
Możesz również użyć pętli for do iteracji przez listę obiektów, takich jak pozycje zamówienia. Na przykład poniższy kod Liquid wyświetla nazwę każdej pozycji zamówienia:
{% for li in order.lineItems %}
{{ li.title }}
{% endfor %}
Aplikacja Flow obsługuje następujące tagi warunkowe (lub przepływu sterowania) Liquid:
Filtry umożliwiają przekształcenie danych w języku Liquid. Flow obsługuje wszystkie filtry Liquid typu open source.
Na przykład poniższy kod Liquid usuwa prefiks z nazwy zamówienia i wyprowadza to, co pozostało: {{ order.name | remove: "Order-" }}
Oprócz standardowych filtrów Liquid aplikacja Flow zapewnia filtry dat pozwalające uzyskać datę powiązaną z inną datą w celu obsługi wyzwalacza Zaplanowany czas i funkcji Pobierz dane. Te filtry to: date_minus i date_plus.
Aby zwrócona została data przypadająca jeden dzień później:{{ "now" | date_plus: "1 day" }}
Aby zwrócona została data przypadająca jeden dzień wcześniej:{{ "now" | date_minus: "1 day" }}
Filtry te akceptują second, minute, day, week, month i year jako jednostkę czasu trwania, zarówno w liczbie pojedynczej (np. second), jak i mnogiej (np. seconds). Oprócz tego formatu można również podać liczbę całkowitą (liczbę sekund). Przykład:{{ "now" | date_minus: 3600 }}
Możesz także podać ciąg znaków czasu trwania ISO8601, gdzie P1Y2D oznacza 1 rok i 2 dni:{{ "now" | date_minus: "P1Y2D" }}
Informacje dotyczące używania zmiennych Liquid w filtrach
Aplikacja Flow nie obsługuje notacji kropek, która jest dostępna dla niektórych filtrów. Na przykład Flow obsługuje {{ order.lineItems | size }}, ale nie {{ order.lineItems.size }}.
Aplikacja Flow nie obsługuje notacji kropek dla metapól. Na przykład nie można użyć {{ order.metafields.custom.hold_note }}. Musisz wówczas zapętlić metapola, jak opisano w przykładach.
Flow nie obsługuje używania indeksów w celu uzyskania dostępu do pozycji na liście. Na przykład, nie można użyć {{ order.lineItems[0].title }}. Zamiast tego musisz przejść pętlą po pozycjach wiersza, tak jak opisano w przykładach.
Przykłady
Aby lepiej zrozumieć, jak używać zmiennych Liquid, przeanalizuj poniższe przykłady.
Wyprowadzanie adresów URL dla zasobów
Chcesz wyprowadzić adresy URL dla klienta, zamówienia i produktu, które są zaangażowane w workflow.
# 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>
Konwertuj listę tagów na metapole
Chcesz przekonwertować zestaw tagów na metapole, które jest listą pól tekstowych z jedną linią. Tworzysz workflow za pomocą wyzwalacza Produkt dodany do sklepu i używasz czynności Aktualizuj metapole produktu. W sekcji Wartość czynności Aktualizuj metapole produktu dodajesz następujący kod liquid. W tym przykładzie założono, że należy ustawić wartości tylko raz podczas tworzenia produktu i że produkt ma dwa istotne tagi: color:red i color:orange.
Przykładowy liquid do ustawienia listy pól tekstowych z jedną linią.
### Napisz dynamiczną wiadomość e-mail dla zamówienia {#dynamic-email}
Chcesz utworzyć workflow, aby wysłać wiadomość e-mail do pracownika, gdy klient wyda więcej niż 500 USD na zamówienie. Utwórz workflow wykorzystujący wyzwalacz Zamówienie utworzone, ustaw warunek, który ma wartość PRAWDA, jeśli suma zamówienia przekracza 500 USD i użyj czynności Wyślij wewnętrzną wiadomość e-mail. W sekcji Wiadomość w czynności Wyślij wewnętrzną wiadomość e-mail możesz użyć następujących zmiennych.
Przykład wykorzystania zmiennej w celu podania danych klienta.
Dane wejściowe
Dane wyjściowe
Proszę wysłać osobiste podziękowanie do {{ order.customer.firstName }} {{ order.customer.lastName }}({{ order.customer.email }}) za złożenie zamówienia na kwotę {{ order.totalPriceSet.shopMoney.amount }} USD.
Proszę wysłać osobiste podziękowanie do Anny Kowalskiej (anna@przykład.com) za złożenie zamówienia na kwotę 763,42 USD.
### Napisz dynamiczną wiadomość e-mail dla produktu, który ma niski poziom zapasu {#dynamic-email-product}
Ustalasz, że musisz informować pracownika, gdy poziom zapasów produktów będzie niski i konieczne będzie złożenie zamówienia na większą ilość zapasów. Utwórz workflow uruchamiany za pomocą wyzwalacza Zmieniono ilość zapasów i ustaw warunek, który jest prawdziwy, jeśli wcześniejsza ilość zapasów jest mniejsza lub równa 10. W sekcji Wiadomość w czynności Wyślij wewnętrzną wiadomość e-mail możesz użyć następujących zmiennych.
Przykład użycia zmiennej w celu podania szczegółów pozycji.
Dane wejściowe
Dane wyjściowe
Zamów ponownie {{ product.title }}. Wyślij e-mail do właściciel@sklep.com e-mail, aby sprawdzić, czy otrzymał zamówienie.
Zamów ponownie legginsy z wysokim stanem – czarne. Wyślij e-mail do właściciel@przykład.com, aby sprawdzić, czy otrzymał zamówienie.
### Napisz dynamiczną wiadomość e-mail, aby powiadomić pracowników o fałszywym zamówieniu {#dynamic-email-fraud}
Chcesz anulować zamówienia o wysokim poziomie ryzyka, ale wolisz, aby Twoi pracownicy anulowali je ręcznie. Utwórz workflow uruchamiany za pomocą wyzwalacza Utworzono zamówienie i ustaw warunek, który ma wartość PRAWDA, jeśli poziom ryzyka zamówienia jest wysoki. W sekcji Wiadomość w czynności Wyślij wewnętrzną wiadomość e-mail możesz użyć następujących zmiennych.
Przykład wykorzystania zmiennej w celu podania informacji o fałszywym zamówieniu.
Dane wejściowe
Dane wyjściowe
Nasz sklep Shopify otrzymał zamówienie z wysokim ryzykiem oszustwa. Chcielibyśmy anulować to zamówienie od razu, zanim zostanie wysłane do produkcji:
Prosimy o potwierdzenie nowego statusu zamówienia. Dziękujemy!
Nasz sklep Shopify otrzymał zamówienie z wysokim ryzykiem oszustwa. Chcielibyśmy anulować to zamówienie od razu, zanim zostanie wysłane do produkcji:
#1001 Kowalska, Anna anna@przykład.com
Prosimy o potwierdzenie nowego statusu zamówienia. Dziękujemy!
### Wyprowadź pozycje dla zamówienia za pomocą pętli for {#output-line-items}
Po otrzymaniu zamówienia przydatne może być wysłanie wiadomości dotyczącej zamówionych produktów. Możesz to zrobić za pomocą instrukcji for loop, które wielokrotnie uruchamiają blok kodu. Pola tekstowe, które obsługują zmienne, obsługują również instrukcje for loops oraz obiekt forloop.
Przykład: chcesz utworzyć workflow, który zwraca listę wszystkich jednostek SKU i ilości w zamówieniu. W sekcji Wiadomość w czynności Wyślij wewnętrzną wiadomość e-mail możesz użyć następujących zmiennych.
Przykład użycia pętli w celu podania informacji o zamówieniu.
Dane wejściowe
Dane wyjściowe
Podsumowanie zamówienia: {% for a in order.lineItems %} SKU: {{a.sku}} ( {{a.quantity}} ), {% endfor %}
### Wyprowadź pozycje dla zamówienia za pomocą pętli for z dodatkowymi informacjami {#output-line-items-additional}
Chcesz dodać więcej informacji do e-maila, w tym nazwę produktu, jednostki SKU, cenę pozycji i informacje o wysyłce do klienta. W sekcji Wiadomość w czynności Wyślij wewnętrzną wiadomość e-mail możesz użyć następujących zmiennych.
Przykład użycia pętli w celu podania bardziej szczegółowych informacji o zamówieniu.
Dane wejściowe
Dane wyjściowe
Podsumowanie zamówienia: {% for a in order.lineItems %} Produkt: {{a.title}} SKU: {{a.sku}} Cena (za sztukę): USD {{a.originalUnitPriceSet.shopMoney.amount}} Ilość: {{a.quantity}} {% endfor %}
Podsumowanie zamówienia: Produkt: Legginsy z wysokim stanem – czarne SKU: 8987097979 Cena (za sztukę): 8,49 USD Ilość: 5 Produkt: Skarpetki sportowe - niebieskie SKU: 888998898B Cena (za sztukę): 5,61 USD Ilość: 2
### Wyprowadź niektóre pozycje, łącząc pętlę for z instrukcją if {#output-line-items-if}
Musisz śledzić sprzedane pozycje, które są dostarczane przez określonego dostawcę. W sekcji Wiadomość w czynności Wyślij wewnętrzną wiadomość e-mail użyj następujących zmiennych i dołącz instrukcję if w for loop.
Przykład użycia instrukcji for loop i if w celu podania informacji o zamówieniu dla określonych dostawców.
Dane wejściowe
Dane wyjściowe
Sprzedany produkt Acme: {% for x in order.lineItems %} {% if x.vendor == 'acme-vendor' %} Nazwa produktu: {{x.title}} SKU: {{x.sku}} {% endif %} {% endfor %}
Sprzedany produkt Acme: Nazwa produktu: z wysokim stanem – czarne SKU: 8987097979
## Złożone obiekty danych w Shopify Flow {#complex-data-objects}
Flow umożliwia dostęp do prawie wszystkich danych, które znajdują się w API GraphQL Admin Obejmuje to złożone obiekty danych, takie jak listy i obiekty. Istnieją jednak pewne ograniczenia dotyczące tego, co można zrobić z tymi obiektami. Sekcja przedstawia te ograniczenia i zawiera przykłady sposobu pracy z nimi.
Zamiast bezpośrednio wywoływać listy i obiekty, musisz zapętlić listę i wstawić tylko żądane pola.
Na przykład, zamiast wywoływania {{ order.lineItems }} bezpośrednio, użyj następującego formatu, aby wywołać określone pola. Przykłady te obejmują wszystkie pola, które byłyby zawarte poprzez bezpośrednie wywołanie listy lub obiektu. Skopiuj i wklej pola, których potrzebujesz.
Text
{% for li in order.lineItems %}
{% comment %}li.contract - omitted{% endcomment %}