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.

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.

obraz pokazujący, które pola akceptują liquid

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:

{% 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:

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.

Wyjściowa wartość metapola

Chcesz wyprowadzić wartość metapola zamówienia w wiadomości e-mail. Metapole jest ciągiem znaków i ma przestrzeń nazw custom oraz klucz hold_note. Wartość tego metapola to Please wait to deliver this order until April 1.. Tworzysz workflow za pomocą wyzwalacza Zamówienie utworzone i używasz 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 do wyprowadzania metapola zamówienia.
Dane wejściowe Dane wyjściowe
{% assign hold_note = order.metafields | where: "namespace", "custom" | where: "key", "hold_note" | first %}
Zamówienie zawiera informację o wstrzymaniu: {{ hold_note.value }}
Zamówienie zawiera informację o wstrzymaniu: Proszę wstrzymać dostawę tego zamówienia do 1 kwietnia.

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ą.
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.

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

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

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:

{{ 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.

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 %}
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.

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

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

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.

Gotowy(-a) do rozpoczęcia sprzedaży za pomocą Shopify?

Wypróbuj za darmo