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:
{% 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:
- 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.
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.
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
.
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.
{% for li in order.lineItems %}
{% comment %}li.contract - omitted{% endcomment %}
{% for ca in li.customAttributes %}
{{ ca.key }}
{{ ca.value }}
{% endfor %}
{% for da in li.discountAllocations %}
{{ da.allocatedAmountSet.presentmentMoney.amount }}
{{ da.allocatedAmountSet.presentmentMoney.currencyCode }}
{{ da.allocatedAmountSet.shopMoney.amount }}
{{ da.allocatedAmountSet.shopMoney.currencyCode }}
{% endfor %}
{{ li.discountedTotalSet.presentmentMoney.amount }}
{{ li.discountedTotalSet.presentmentMoney.currencyCode }}
{{ li.discountedTotalSet.shopMoney.amount }}
{{ li.discountedTotalSet.shopMoney.currencyCode }}
{{ li.discountedUnitPriceSet.presentmentMoney.amount }}
{{ li.discountedUnitPriceSet.presentmentMoney.currencyCode }}
{{ li.discountedUnitPriceSet.shopMoney.amount }}
{{ li.discountedUnitPriceSet.shopMoney.currencyCode }}
{% comment %}li.duties - omitted {% endcomment %}
{{ li.fulfillableQuantity }}
{{ li.fulfillmentService.callbackUrl }}
{{ li.fulfillmentService.fulfillmentOrdersOptIn }}
{{ li.fulfillmentService.handle }}
{{ li.fulfillmentService.id }}
{{ li.fulfillmentService.inventoryManagement }}
{% comment %}rest of location omitted{% endcomment %}
{{ li.fulfillmentService.location.name }}
{{ li.fulfillmentService.productBased }}
{{ li.fulfillmentService.serviceName }}
{% for sm in li.fulfillmentService.shippingMethods %}
{{ sm.code }}
{{ sm.label }}
{% endfor %}
{{ li.fulfillmentService.type }}
{{ li.fulfillmentStatus }}
{{ li.id }}
{{ li.image.altText }}
{{ li.image.height }}
{{ li.image.id }}
{% comment %}li.image.metafield omitted{% endcomment %}
{% comment %}li.image.privateMetafield omitted{% endcomment %}
{{ li.image.width }}
{{ li.merchantEditable }}
{{ li.name }}
{{ li.nonFulfillableQuantity }}
{{ li.originalTotalSet.presentmentMoney.amount }}
{{ li.originalTotalSet.presentmentMoney.currencyCode }}
{{ li.originalTotalSet.shopMoney.amount }}
{{ li.originalTotalSet.shopMoney.currencyCode }}
{{ li.originalUnitPriceSet.presentmentMoney.amount }}
{{ li.originalUnitPriceSet.presentmentMoney.currencyCode }}
{{ li.originalUnitPriceSet.shopMoney.amount }}
{{ li.originalUnitPriceSet.shopMoney.currencyCode }}
{% comment %}rest of product omitted{% endcomment %}
{{ li.product.title }}
{{ li.quantity }}
{{ li.refundableQuantity }}
{{ li.requiresShipping }}
{{ li.restockable }}
{{ li.sellingPlan.name }}
{{ li.sku }}
{% for tl in li.taxLines %}
{{ tl.priceSet.presentmentMoney.amount | json }}
{{ tl.priceSet.presentmentMoney.currencyCode | json }}
{{ tl.priceSet.shopMoney.amount | json }}
{{ tl.priceSet.shopMoney.currencyCode | json }}
{{ tl.rate | json }}
{{ tl.ratePercentage | json }}
{{ tl.title | json }}
{% endfor %}
{{ li.taxable }}
{{ li.title }}
{{ li.totalDiscountSet.presentmentMoney.amount }}
{{ li.totalDiscountSet.presentmentMoney.currencyCode }}
{{ li.totalDiscountSet.shopMoney.amount }}
{{ li.totalDiscountSet.shopMoney.currencyCode }}
{{ li.unfulfilledDiscountedTotalSet.presentmentMoney.amount }}
{{ li.unfulfilledDiscountedTotalSet.presentmentMoney.currencyCode }}
{{ li.unfulfilledDiscountedTotalSet.shopMoney.amount }}
{{ li.unfulfilledDiscountedTotalSet.shopMoney.currencyCode }}
{{ li.unfulfilledOriginalTotalSet.presentmentMoney.amount }}
{{ li.unfulfilledOriginalTotalSet.presentmentMoney.currencyCode }}
{{ li.unfulfilledOriginalTotalSet.shopMoney.amount }}
{{ li.unfulfilledOriginalTotalSet.shopMoney.currencyCode }}
{{ li.unfulfilledQuantity }}
{% comment %}rest of variant omitted{% endcomment %}
{{ li.variant.title }}
{{ li.variantTitle }}
{{ li.vendor }}
{% endfor %}
{
"lineItems": [
{% for li in order.lineItems %}
{% if forloop.first != true %},{% endif %}
{
"contract": {
{% comment %}rest of contract omitted{% endcomment %}
"id": {{ li.contract.id | json }}
},
"customAttributes": [
{% for ca in li.customAttributes %}
{% if forloop.first != true %},{% endif %}
{
"key":{{ ca.key | json }},
"value":{{ ca.value | json }}
}
{% endfor %}
],
"discountAllocations": [
{% for da in li.discountAllocations %}
{% if forloop.first != true %},{% endif %}
"allocatedAmountSet": {
"presentmentMoney" : {
"amount": {{ da.allocatedAmountSet.presentmentMoney.amount | json }},
"currencyCode": {{ da.allocatedAmountSet.presentmentMoney.currencyCode | json }}
},
"shopMoney": {
"amount": {{ da.allocatedAmountSet.shopMoney.amount | json }},
"currencyCode": {{ da.allocatedAmountSet.shopMoney.currencyCode | json }}
}
}
{% endfor %}
],
"discountedTotalSet": {
"presentmentMoney" : {
"amount": {{ li.discountedTotalSet.presentmentMoney.amount | json }},
"currencyCode": {{ li.discountedTotalSet.presentmentMoney.currencyCode | json }}
},
"shopMoney": {
"amount": {{ li.discountedTotalSet.shopMoney.amount | json }},
"currencyCode": {{ li.discountedTotalSet.shopMoney.currencyCode | json }}
}
},
"discountedUnitPriceSet": {
"presentmentMoney" : {
"amount": {{ li.discountedUnitPriceSet.presentmentMoney.amount | json }},
"currencyCode": {{ li.discountedUnitPriceSet.presentmentMoney.currencyCode | json }}
},
"shopMoney": {
"amount": {{ li.discountedUnitPriceSet.shopMoney.amount | json }},
"currencyCode": {{ li.discountedUnitPriceSet.shopMoney.currencyCode | json }}
}
},
"duties": [
{% for duty li.duties %}
{% if forloop.first != true %},{% endif %}
{
{% comment %}rest of duties omitted{% endcomment %}
"id": {{ duty.id | json }}
}
{% endfor %}
],
"fulfillableQuantity": {{ li.fulfillableQuantity | json }},
"fulfillmentService": {
"callbackUrl":{{ li.fulfillmentService.callbackUrl | json }},
"fulfillmentOrdersOptIn": {{ li.fulfillmentService.fulfillmentOrdersOptIn | json }},
"handle": {{ li.fulfillmentService.handle | json }},
"id": {{ li.fulfillmentService.id | json }},
"inventoryManagement": {{ li.fulfillmentService.inventoryManagement | json }},
{% comment %}fulfillmentService.inventoryManagement - omitted {% endcomment %}
"productBased": {{ li.fulfillmentService.productBased | json }},
"serviceName": {{ li.fulfillmentService.serviceName | json }},
"shippingMethods": [
{% for sm in li.fulfillmentService.shippingMethods %}
{% if forloop.first != true %},{% endif %}
{
"code": {{ sm.code | json }},
"label": {{ sm.label | json }}
}
{% endfor %}
],
"type": {{ li.fulfillmentService.type | json }}
},
"fulfillmentStatus": {{ li.fulfillmentStatus | json }},
"id": {{ li.id | json }},
"image": {
"altText": {{ li.image.altText | json }},
"height": {{ li.image.height | json }},
"id": {{ li.image.id | json }},
{% comment %}li.image.metafield omitted{% endcomment %}
{% comment %}li.image.privateMetafield omitted{% endcomment %}
"width":{{ li.image.width | json }}
},
"merchantEditable": {{ li.merchantEditable | json }},
"name": {{ li.name | json }},
"nonFulfillableQuantity": {{ li.nonFulfillableQuantity | json }},
"originalTotalSet": {
"presentmentMoney" : {
"amount": {{ li.originalTotalSet.presentmentMoney.amount | json }},
"currencyCode": {{ li.originalTotalSet.presentmentMoney.currencyCode | json }}
},
"shopMoney": {
"amount": {{ li.originalTotalSet.shopMoney.amount | json }},
"currencyCode": {{ li.originalTotalSet.shopMoney.currencyCode | json }}
}
},
"originalUnitPriceSet": {
"presentmentMoney" : {
"amount": {{ li.originalUnitPriceSet.presentmentMoney.amount | json }},
"currencyCode": {{ li.originalUnitPriceSet.presentmentMoney.currencyCode | json }}
},
"shopMoney": {
"amount": {{ li.originalUnitPriceSet.shopMoney.amount | json }},
"currencyCode": {{ li.originalUnitPriceSet.shopMoney.currencyCode | json }}
}
},
"product": {
{% comment %}rest of Product omitted{% endcomment %}
"title": {{ li.product.title | json }}
},
"quantity": {{ li.quantity | json }},
"refundableQuantity": {{ li.refundableQuantity | json }},
"requiresShipping": {{ li.requiresShipping | json }},
"restockable": {{ li.restockable | json }},
"sellingPlan": {
"name": {{ li.sellingPlan.name | json }}
},
"sku": {{ li.sku | json }},
"taxLines": [
{% for tl in li.taxLines %}
{% if forloop.first != true %},{% endif %}
{
"priceSet": {
"presentmentMoney" : {
"amount": {{ tl.priceSet.presentmentMoney.amount | json }},
"currencyCode": {{ tl.priceSet.presentmentMoney.currencyCode | json }}
},
"shopMoney": {
"amount": {{ tl.priceSet.shopMoney.amount | json }},
"currencyCode": {{ tl.priceSet.shopMoney.currencyCode | json }}
}
},
"rate": {{ tl.rate | json }},
"ratePercentage": {{ tl.ratePercentage | json }},
"title": {{ tl.title | json }}
}
{% endfor %}
],
"taxable":{{ li.taxable | json }},
"title":{{ li.title | json }},
"totalDiscountSet": {
"presentmentMoney" : {
"amount": {{ li.totalDiscountSet.presentmentMoney.amount | json }},
"currencyCode": {{ li.totalDiscountSet.presentmentMoney.currencyCode | json }}
},
"shopMoney": {
"amount": {{ li.totalDiscountSet.shopMoney.amount | json }},
"currencyCode": {{ li.totalDiscountSet.shopMoney.currencyCode | json }}
}
},
"unfulfilledDiscountedTotalSet": {
"presentmentMoney" : {
"amount": {{ li.unfulfilledDiscountedTotalSet.presentmentMoney.amount | json }},
"currencyCode": {{ li.unfulfilledDiscountedTotalSet.presentmentMoney.currencyCode | json }}
},
"shopMoney": {
"amount": {{ li.unfulfilledDiscountedTotalSet.shopMoney.amount | json }},
"currencyCode": {{ li.unfulfilledDiscountedTotalSet.shopMoney.currencyCode | json }}
}
},
"unfulfilledOriginalTotalSet": {
"presentmentMoney" : {
"amount": {{ li.unfulfilledOriginalTotalSet.presentmentMoney.amount | json }},
"currencyCode": {{ li.unfulfilledOriginalTotalSet.presentmentMoney.currencyCode | json }}
},
"shopMoney": {
"amount": {{ li.unfulfilledOriginalTotalSet.shopMoney.amount | json }},
"currencyCode": {{ li.unfulfilledOriginalTotalSet.shopMoney.currencyCode | json }}
}
},
"unfulfilledQuantity": {{ li.unfulfilledQuantity | json }},
"variant": {
{% comment %}rest of variant omitted {% endcomment %}
"title": {{ li.variant.title | json }}
},
"variantTitle": {{ li.variantTitle | json }},
"vendor": {{ li.vendor | json }}
}
{% endfor %}
]
}