Variabler i Shopify Flow

Variabler är platshållare definierade i Liquid som ersätts med värden från GraphQL Admin API när ett arbetsflöde körs. Variabler kan beskriva attribut för kunder, ordrar och produkter som ingår i dina arbetsflöden, till exempel variabler för ordernummer, orderpris, kundnamn med mera. Variabler kan användas i villkor för att styra logiken i arbetsflödet eller för att mata ut data från en åtgärd.

Lägg till variabler

Du kan lägga till variabler med hjälp av Liquid i alla textfält som innehåller länken Lägg till variabel. Klicka på länken Lägg till variabel under det relevanta fältet och välj sedan en variabel från listan.

bild som visar vilka fält som accepterar liquid

Variablerna i listan Lägg till en variabel filtreras så att du bara använder de variabler som returneras av steg före det aktuella steget, till exempel utlösare. Till exempel ger Order skapad-utlösaren order- och butiksresurser från adminpanels-API som kan infogas som variabler. När du har valt en variabel från listan läggs den till i textrutan som korrekt formaterad Liquid.

Du kan även skriva Liquid direkt i textblocket. Du kan till exempel använda variabeln {{ order.name }} för att visa ordersträngen som visas i Shopify-admin, till exempel order-123.

Eftersom Flow använder Admin API:n för att hämta data som används för Liquid, så använder variabelsyntaxen "kamelnotation". Om du till exempel vill komma åt datumet då en produkt skapades anger du {{ product.createdAt }}. Om du använder Liquid-syntaxen i ett Shopify-tema anger du {{ product.created_at }}.

Liquid-taggar för villkorande och iteration

Ibland kan du vilja använda Liquid-taggar för att göra följande:

  • Skriv villkorande påståenden, till exempel för att avgöra om en ordersumma är större än 100 USD
  • Iterera genom en lista över objekt, till exempel utdata för varje radobjekt i en order

Du kan använda Liquid-taggar för att skriva dessa påståenden och iterera genom objekt.

Till exempel visar följande Liquid ordernumret om ordersumman är större än 100 USD:

{% if order.totalPriceSet.shopMoney.amount > 100 %}
  Order number: {{ order.name }}
{% endif %}

Du kan även använda en för loop för att iterera genom en lista över objekt, till exempel radartiklar för en order. Följande Liquid visar till exempel namnet på varje radartikel i en order:

{% for li in order.lineItems %}
  {{ li.title }}
{% endfor %}

Flow stöder följande villkors-taggar för Liquid (eller kontrollflöde):

Flow stöder även följande Liquid iteration-taggar:

Filter

Filter gör det möjligt för dig att omvandla data i Liquid. Flow stöder alla Liquid-filter med öppen källkod.

Till exempel tar följande Liquid bort ett prefix från ett ordernamn och matar ut det som finns kvar: {{ order.name | remove: "Order-" }}

Förutom standard-Liquid-filtren tillhandahåller Flow datumfilter för att få ett datum i förhållande till ett annat datum för att stödja funktionerna Schemalagd tidsutlösare och Få data . Dessa filter är: date_minus och date_plus.

Så här returnerar du ett datum en dag i framtiden:{{ "now" | date_plus: "1 day" }}

Så här returnerar du ett datum en dag som gått:{{ "now" | date_minus: "1 day" }}

Dessa filter accepterar second, minute, day, week, month och year som varaktighetsenhet, både singular (t.ex. second) och plural (t.ex. seconds). Förutom det här formatet kan du även ange ett heltal (antal sekunder). Till exempel:{{ "now" | date_minus: 3600 }}

Du kan även leverera en ISO8601-varaktighetssträng, där P1Y2D betyder 1 år och 2 dagar:{{ "now" | date_minus: "P1Y2D" }}

Överväganden för användning av Liquid-variabler i filter

  • Flow stöder inte dot-notation som är tillgänglig för vissa filter. Flow stöder till exempel {{ order.lineItems | size }} men inte {{ order.lineItems.size }}.
  • Flow stöder inte dot-notation för metafält. Du kan till exempel inte använda {{ order.metafields.custom.hold_note }}. Istället måste du loopa över metafälten som beskrivs i exemplen.
  • Flow stöder inte användning av index för att komma åt objekt i en lista. Du kan till exempel inte använda {{ order.lineItems[0].title }}. Istället måste du loopa över radobjekten så som beskrivs i exemplen.

Exempel

Överväg följande exempel för att få en bättre känsla av hur du använder Liquid-variabler.

Utdata-URL:er för resurser

Du vill mata ut URL:erna för kunden, ordern och produkten som är inblandade i ett arbetsflöde.

# 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>

Konvertera en lista med taggar till ett metafält

Du vill konvertera en uppsättning taggar till ett metafält som är en lista över textfält med en enda rad. Du skapar ett arbetsflöde med hjälp av utlösaren Produkt tillagd till butik och använder åtgärden Uppdatera metafält för produkt. I avsnittet Värde i åtgärden Uppdatera produktmetafält lägger du till följande liquid-kod. Det här exemplet förutsätter att du bara behöver ställa in värdena en gång när produkten skapas och att produkten har två relevanta taggar: color:red och color:orange.

Exempel på liquid för att konfigurera listan över ett textfält med en rad.
IndataUtdata
{% 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: ","}}]






["röd","orange"]
### Skriva ett dynamiskt e-postmeddelande för en order {#dynamic-email}

Du vill skapa ett arbetsflöde för att skicka ett e-postmeddelande till en anställd när en kund spenderar mer än 500 USD på en order. Du skapar ett arbetsflöde med hjälp av utlösaren Order skapad, anger ett villkor som är sant om ordersumman är över 500 USD och använder åtgärden Skicka internt e-postmeddelande. I avsnittet Meddelande i åtgärden Skicka internt e-postmeddelande använder du följande variabler.

Exempel på variabelanvändning för att tillhandahålla kunduppgifter.
IndataUtdata
Skicka en personlig tackhälsning till {{ order.customer.firstName }} {{ order.customer.lastName }}({{ order.customer.email }}) för att de lade en order på {{ order.totalPriceSet.shopMoney.amount }} USD.Skicka en personlig tackhälsning till Jeanne Dupont (jeanne@example.com) för att de lade en order på 763,42 USD.
### Skriva ett dynamiskt e-postmeddelande för en produkt som har låg lagernivå {#dynamic-email-product}

Du bestämmer dig för att du behöver informera en medarbetare när produktlagret börjar bli lågt och en order måste läggas på fler lagerartiklar. Du skapar ett arbetsflöde som startar med utlösaren Lagerkvantitet ändrad och anger ett villkor som är sant om den tidigare lagerkvantiteten är mindre än eller lika med 10. I avsnittet Meddelande i åtgärden Skicka internt e-postmeddelande använder du följande variabler.

Exempel på variabelanvändning för att tillhandahålla artikelinformation.
IndataUtdata
Återbeställ {{ product.title }}. Skicka ett e-postmeddelande till owner@store.com för att verifiera att de har tagit emot inköpsordern.Återbeställ Leggings med hög midja – svarta. Skicka ett e-postmeddelande till owner@example.com för att verifiera att de har tagit emot inköpsordern.
### Skriva ett dynamiskt e-postmeddelande för att meddela personal om en bedräglig order {#dynamic-email-fraud}

Du vill annullera ordrar med hög risknivå men föredrar att din personal annullerar ordern manuellt. Du skapar ett arbetsflöde som startar med utlösaren Order skapad och anger ett villkor som är sant om risknivån för ordern är lika med hög. I avsnittet Meddelande i åtgärden Skicka internt e-postmeddelande använder du följande variabler.

Exempel på variabelanvändning för att tillhandahålla information om en bedräglig order.
IndataUtdata
Vår Shopify-butik har fått en order med stor risk för bedrägeri. Vi vill omedelbart annullera denna order innan den skickas till produktion:

{{ order.name }}
{{ order.billingAddress.lastName }}, {{ order.billingAddress.firstName }}
{{ order.email }}

Bekräfta den nya orderstatusen. Tack!





Vår Shopify-butik har fått en order med stor risk för bedrägeri. Vi vill omedelbart annullera denna order innan den skickas till produktion:

#1001
Dupont, Jeanne
jeanne@example.com

Bekräfta den nya orderstatusen. Tack!





### Mata ut posterna för en order med en for-loop {#output-line-items}

När en order tas emot kan det vara bra att skicka ett meddelande som innehåller de beställda produkterna. Du kan göra det genom att använda for loop, som kör ett kodblock upprepade gånger. Textfält som stöder variabler stöder även for loops och forloop-objekt.

Du vill till exempel skapa ett arbetsflöde som returnerar en lista över alla SKU:er och kvantiteter i en order. I avsnittet Meddelande i åtgärden Skicka internt e-postmeddelande använder du följande variabler.

Exempel på for loop-användning för att tillhandahålla orderinformation.
IndataUtdata
Ordersammanfattning:
{% for a in order.lineItems %}
SKU: {{a.sku}} ( {{a.quantity}} ),
{% endfor %}


Ordersammanfattning:
8987097979 (50)
8877778887 (3)
888998898B (1)


### Mata ut posterna för en order med en for-loop med ytterligare information {#output-line-items-additional}

Du bestämmer dig för att lägga till mer information i e-postmeddelandet, inklusive produktnamn, SKU:er, pris per artikel och kundens leveransinformation. I avsnittet Meddelande i åtgärden Skicka internt e-postmeddelande använder du följande variabler.

Exempel på for loop-användning för att tillhandahålla mer omfattande orderinformation.
IndataUtdata
Ordersammanfattning:
{% for a in order.lineItems %}
Produkt: {{a.title}}
SKU: {{a.sku}}
Pris (per enhet): {{a.originalUnitPriceSet.shopMoney.amount}} USD
Kvantitet: {{a.quantity}}
{% endfor %}





Ordersammanfattning:
Produkt: Leggings med hög midja – svarta
SKU: 8987097979
Pris (per enhet): 8,49 USD
Kvantitet: 5
Produkt: Sportsockor – blå
SKU: 888999888B
Pris (per enhet): 5,61 USD
Kvantitet: 2







### Mata ut vissa poster genom att kombinera en for-loop med ett if-påstående {#output-line-items-if}

Du måste spåra sålda artiklar som tillhandahålls av en specifik säljare. I avsnittet Meddelande i åtgärden Skicka e-postmeddelande använder du följande variabler och inkluderar ett if-utdrag i din for loop.

Exempel på användning av for loop och if-utdrag för att tillhandahålla orderinformation för specifika säljare.
IndataUtdata
Såld Acme-produkt:
{% for x in order.lineItems %}
{% if x.vendor == 'acme-vendor' %}
Produktnamn: {{x.title}}
SKU: {{x.sku}}
{% endif %}
{% endfor %}





Såld Acme-produkt:
Produktnamn: Leggings med hög midja – svarta
SKU: 8987097979

## Komplexa dataobjekt i Shopify Flow {#complex-data-objects}

Flow gör det möjligt för dig att komma åt nästan alla data som finns i GraphQL Admin API. Detta inkluderar komplexa dataobjekt, till exempel listor och objekt. Det finns dock vissa begränsningar för vad du kan göra med dessa objekt. Avsnittet beskriver dessa begränsningar och ger exempel på hur du kan arbeta med dem.

Istället för att anropa listor och objekt direkt bör du loopa över listan och bara inkludera de fält du vill ha.

Till exempel, istället för att anropa {{ order.lineItems }} direkt kan du använda följande format för att anropa specifika fält. Dessa exempel inkluderar alla fält som skulle ingå om listan eller objektet anropades direkt. Kopiera och klistra in de fält du behöver.

Text
{% 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 %}

json
{
    "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 %}
            ],
&#x22;discountAllocations&#x22;: [
            {% for da in li.discountAllocations %}
                {% if forloop.first != true %},{% endif %}
                &#x22;allocatedAmountSet&#x22;: {
                    &#x22;presentmentMoney&#x22; : {
                        &#x22;amount&#x22;: {{ da.allocatedAmountSet.presentmentMoney.amount | json }},
                        &#x22;currencyCode&#x22;: {{ da.allocatedAmountSet.presentmentMoney.currencyCode | json }}
                    },
                    &#x22;shopMoney&#x22;: {
                        &#x22;amount&#x22;: {{ da.allocatedAmountSet.shopMoney.amount | json }},
                        &#x22;currencyCode&#x22;: {{ da.allocatedAmountSet.shopMoney.currencyCode | json }}
                    }
                }
            {% endfor %}
        ],

        &#x22;discountedTotalSet&#x22;: {
            &#x22;presentmentMoney&#x22; : {
                &#x22;amount&#x22;: {{ li.discountedTotalSet.presentmentMoney.amount | json }},
                &#x22;currencyCode&#x22;: {{ li.discountedTotalSet.presentmentMoney.currencyCode | json }}
            },
            &#x22;shopMoney&#x22;: {
                &#x22;amount&#x22;: {{ li.discountedTotalSet.shopMoney.amount | json }},
                &#x22;currencyCode&#x22;: {{ li.discountedTotalSet.shopMoney.currencyCode | json }}
            }
        },

        &#x22;discountedUnitPriceSet&#x22;: {
            &#x22;presentmentMoney&#x22; : {
                &#x22;amount&#x22;: {{ li.discountedUnitPriceSet.presentmentMoney.amount | json }},
                &#x22;currencyCode&#x22;: {{ li.discountedUnitPriceSet.presentmentMoney.currencyCode | json }}
            },
            &#x22;shopMoney&#x22;: {
                &#x22;amount&#x22;: {{ li.discountedUnitPriceSet.shopMoney.amount | json }},
                &#x22;currencyCode&#x22;: {{ li.discountedUnitPriceSet.shopMoney.currencyCode | json }}
            }
        },
        &#x22;duties&#x22;: [
            {% for duty li.duties %}
            {% if forloop.first != true %},{% endif %}
            {
                {% comment %}rest of duties omitted{% endcomment %}
                &#x22;id&#x22;: {{ duty.id | json }}
            }
            {% endfor %}
        ],
        &#x22;fulfillableQuantity&#x22;: {{ li.fulfillableQuantity | json }},

        &#x22;fulfillmentService&#x22;: {
            &#x22;callbackUrl&#x22;:{{ li.fulfillmentService.callbackUrl | json }},
            &#x22;fulfillmentOrdersOptIn&#x22;: {{ li.fulfillmentService.fulfillmentOrdersOptIn | json }},
            &#x22;handle&#x22;: {{ li.fulfillmentService.handle | json }},
            &#x22;id&#x22;: {{ li.fulfillmentService.id | json }},
            &#x22;inventoryManagement&#x22;: {{ li.fulfillmentService.inventoryManagement | json }},
            {% comment %}fulfillmentService.inventoryManagement - omitted {% endcomment %}
            &#x22;productBased&#x22;: {{ li.fulfillmentService.productBased | json }},
            &#x22;serviceName&#x22;: {{ li.fulfillmentService.serviceName | json }},
            &#x22;shippingMethods&#x22;: [
                {% for sm in li.fulfillmentService.shippingMethods %}
                    {% if forloop.first != true %},{% endif %}
                    {
                        &#x22;code&#x22;: {{ sm.code | json }},
                        &#x22;label&#x22;: {{ sm.label | json }}
                    }
                {% endfor %}
            ],
            &#x22;type&#x22;: {{ li.fulfillmentService.type | json }}

        },
        &#x22;fulfillmentStatus&#x22;: {{ li.fulfillmentStatus | json }},
        &#x22;id&#x22;: {{ li.id | json }},
        &#x22;image&#x22;: {
            &#x22;altText&#x22;: {{ li.image.altText | json }},
            &#x22;height&#x22;: {{ li.image.height | json }},
            &#x22;id&#x22;: {{ li.image.id | json }},
            {% comment %}li.image.metafield omitted{% endcomment %}
            {% comment %}li.image.privateMetafield omitted{% endcomment %}
            &#x22;width&#x22;:{{ li.image.width | json }}
        },
        &#x22;merchantEditable&#x22;: {{ li.merchantEditable | json }},
        &#x22;name&#x22;: {{ li.name | json }},
        &#x22;nonFulfillableQuantity&#x22;: {{ li.nonFulfillableQuantity | json }},

        &#x22;originalTotalSet&#x22;: {
            &#x22;presentmentMoney&#x22; : {
                &#x22;amount&#x22;: {{ li.originalTotalSet.presentmentMoney.amount | json }},
                &#x22;currencyCode&#x22;: {{ li.originalTotalSet.presentmentMoney.currencyCode | json }}
            },
            &#x22;shopMoney&#x22;: {
                &#x22;amount&#x22;: {{ li.originalTotalSet.shopMoney.amount | json }},
                &#x22;currencyCode&#x22;: {{ li.originalTotalSet.shopMoney.currencyCode | json }}
            }
        },

        &#x22;originalUnitPriceSet&#x22;: {
            &#x22;presentmentMoney&#x22; : {
                &#x22;amount&#x22;: {{ li.originalUnitPriceSet.presentmentMoney.amount | json }},
                &#x22;currencyCode&#x22;: {{ li.originalUnitPriceSet.presentmentMoney.currencyCode | json }}
            },
            &#x22;shopMoney&#x22;: {
                &#x22;amount&#x22;: {{ li.originalUnitPriceSet.shopMoney.amount | json }},
                &#x22;currencyCode&#x22;: {{ li.originalUnitPriceSet.shopMoney.currencyCode | json }}
            }
        },

        &#x22;product&#x22;: {
            {% comment %}rest of Product omitted{% endcomment %}
            &#x22;title&#x22;: {{ li.product.title | json }}
        },

        &#x22;quantity&#x22;: {{ li.quantity | json }},
        &#x22;refundableQuantity&#x22;: {{ li.refundableQuantity | json }},
        &#x22;requiresShipping&#x22;: {{ li.requiresShipping | json }},
        &#x22;restockable&#x22;: {{ li.restockable | json }},

        &#x22;sellingPlan&#x22;: {
            &#x22;name&#x22;: {{ li.sellingPlan.name | json }}
        },

        &#x22;sku&#x22;: {{ li.sku | json }},

        &#x22;taxLines&#x22;: [
            {% for tl in li.taxLines %}
                {% if forloop.first != true %},{% endif %}
                {
                    &#x22;priceSet&#x22;: {
                        &#x22;presentmentMoney&#x22; : {
                            &#x22;amount&#x22;: {{ tl.priceSet.presentmentMoney.amount | json }},
                            &#x22;currencyCode&#x22;: {{ tl.priceSet.presentmentMoney.currencyCode | json }}
                        },
                        &#x22;shopMoney&#x22;: {
                            &#x22;amount&#x22;: {{ tl.priceSet.shopMoney.amount | json }},
                            &#x22;currencyCode&#x22;: {{ tl.priceSet.shopMoney.currencyCode | json }}
                        }
                    },
                    &#x22;rate&#x22;: {{ tl.rate | json }},
                    &#x22;ratePercentage&#x22;: {{ tl.ratePercentage | json }},
                    &#x22;title&#x22;: {{ tl.title | json }}
                }
            {% endfor %}
        ],
        &#x22;taxable&#x22;:{{ li.taxable | json }},
        &#x22;title&#x22;:{{ li.title | json }},

        &#x22;totalDiscountSet&#x22;: {
            &#x22;presentmentMoney&#x22; : {
                &#x22;amount&#x22;: {{ li.totalDiscountSet.presentmentMoney.amount | json }},
                &#x22;currencyCode&#x22;: {{ li.totalDiscountSet.presentmentMoney.currencyCode | json }}
            },
            &#x22;shopMoney&#x22;: {
                &#x22;amount&#x22;: {{ li.totalDiscountSet.shopMoney.amount | json }},
                &#x22;currencyCode&#x22;: {{ li.totalDiscountSet.shopMoney.currencyCode | json }}
            }
        },

        &#x22;unfulfilledDiscountedTotalSet&#x22;: {
            &#x22;presentmentMoney&#x22; : {
                &#x22;amount&#x22;: {{ li.unfulfilledDiscountedTotalSet.presentmentMoney.amount | json }},
                &#x22;currencyCode&#x22;: {{ li.unfulfilledDiscountedTotalSet.presentmentMoney.currencyCode | json }}
            },
            &#x22;shopMoney&#x22;: {
                &#x22;amount&#x22;: {{ li.unfulfilledDiscountedTotalSet.shopMoney.amount | json }},
                &#x22;currencyCode&#x22;: {{ li.unfulfilledDiscountedTotalSet.shopMoney.currencyCode | json }}
            }
        },

        &#x22;unfulfilledOriginalTotalSet&#x22;: {
            &#x22;presentmentMoney&#x22; : {
                &#x22;amount&#x22;: {{ li.unfulfilledOriginalTotalSet.presentmentMoney.amount | json }},
                &#x22;currencyCode&#x22;: {{ li.unfulfilledOriginalTotalSet.presentmentMoney.currencyCode | json }}
            },
            &#x22;shopMoney&#x22;: {
                &#x22;amount&#x22;: {{ li.unfulfilledOriginalTotalSet.shopMoney.amount | json }},
                &#x22;currencyCode&#x22;: {{ li.unfulfilledOriginalTotalSet.shopMoney.currencyCode | json }}
            }
        },

        &#x22;unfulfilledQuantity&#x22;: {{ li.unfulfilledQuantity | json }},

        &#x22;variant&#x22;: {
            {% comment %}rest of variant omitted {% endcomment %}
            &#x22;title&#x22;: {{ li.variant.title | json }}
        },

        &#x22;variantTitle&#x22;: {{ li.variantTitle | json }},
        &#x22;vendor&#x22;: {{ li.vendor | json }}
    }
{% endfor %}
]

}

Hittar du inte de svar du letar efter? Vi finns här för att hjälpa till!