Zmienne Liquid w Shopify Flow
Zmienne to symbole zastępcze, które są zastępowane wartościami po uruchomieniu workflow. Zmienne te opisują atrybuty klientów, zamówień i produktów objętych procesami workflow. Istnieją na przykład zmienne dla nr-u zamówienia, ceny zamówienia, nazwy klienta itd. Zmienne mogą być używane w warunkach do kontrolowania logiki w workflow lub do wyprowadzania danych w czynności.
Na tej stronie
Informacje o języku Liquid
Liquid to język szablonu, który jest używany do uzyskiwania dostępu do zmiennych w czynnościach i do pisania kodu w aplikacji Flow. Flow używa wariantu Liquid, który jest najbardziej zbliżony do biblioteki open source. W szablonach Shopify używany jest inny wariant Liquid, ale ten wariant Liquid jest specyficzny dla szablonów i zawiera wiele więcej filtrów i tagów niż obsługuje aplikacja Flow, a także inną składnię dostępu do zmiennych.
Zmienne Liquid
Możesz dodać zmienne 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 widzisz tylko zmienne zwracane 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, co umożliwia korzystanie z dowolnych zmiennych związanych z zamówieniem lub ustawieniami sklepu, które są dostępne w interfejsie API GraphQL Admin. Po wybraniu zmiennej z listy jest ona poprawnie formatowana i dodawana do pola tekstowego.
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 zamówienia wyświetlanego w panelu administracyjnym Shopify, np. zamówienie-123.
Ponieważ aplikacja Flow wykorzystuje interfejs API GraphQL Admin do pobierania danych, których używasz w języku Liquid, składnia zmiennej stosuje system notacji „camel case”. 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:
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:
Aplikacja Flow obsługuje następujące tagi warunkowe (lub przepływu sterowania) Liquid:
- if
- unless
- elsif/else
- case/when
- and/or (wiele warunków)
Flow obsługuje również następujące tagi iteracji Liquid:
Filtry
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.
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
.
Dane wejściowe | Dane wyjściowe |
---|---|
{% capture mf_value %} {%- for tags_item in product.tags -%} {%- if tags_item contains "color:" -%} "{{- tags_item | remove_first: "color:" | strip -}}", {%- endif -%} {%- endfor -%} {% endcapture -%} [{{mf_value | remove_last: ","}}] | ["czerwony","pomarańczowy"] |
Napisz dynamiczną wiadomość e-mail dla zamówienia
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.
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
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.
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
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.
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: {{ order.name }} {{ order.billingAddress.lastName }}, {{ order.billingAddress.firstName }} {{ order.email }} 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
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.
Dane wejściowe | Dane wyjściowe |
---|---|
Podsumowanie zamówienia: {% for a in order.lineItems %} SKU: {{a.sku}} ( {{a.quantity}} ), {% endfor %} | Podsumowanie zamówienia: 8987097979 (50) 8877778887 (3) 888998898B (1) |
Wyprowadź pozycje dla zamówienia za pomocą pętli for z dodatkowymi informacjami
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.
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
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
.
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
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.