Liquid-variabler i Shopify Flow

Variabler er plassholdere som erstattes med verdier når en arbeidsflyt kjører. Disse variablene beskriver egenskapene til kunder, bestillinger og produkter som er involvert i arbeidsflytene dine. Det finnes for eksempel variabler for bestillingsnummer, bestillingspris, kundenavn og så videre. Variabler kan brukes i betingelser til å kontrollere logikken i arbeidsflyten, eller for å sende data i en handling.

Om Liquid

Liquid er et malspråk som brukes for å hente variabler i handlinger, og for å skrive kode i Flow. Flow bruker en variant av Liquid som ligger nærmest biblioteket med åpen kildekode. Shopify-temaer bruker en annen variant av Liquid, men denne varianten av Liquid er spesifikk for temaer, og inneholder mange flere filtre og tagger enn Flow støtter, samt en annen syntaks for å bruke variabler.

Liquid-variabler

Du kan legge til Liquid-variabler for alle tekstfelter som inneholder koblingen Legg til en variabel. Klikk på koblingen Legg til en variabel under det relevante feltet, og velg deretter en variabel fra listen.

et bilde som viser hvilke felter som godtar liquid

Variablene i listen Legg til en variabel er filtrert, slik at du bare kan se variablene som returneres av trinn før det gjeldende trinnet, som utløsere. Utløseren Bestilling opprettet leverer for eksempel bestillings- og butikkressurser, som deretter lar deg bruke alle variabler knyttet til bestillingen eller butikkinnstillingene, som er tilgjengelig i GraphQL Admin API. Når du har valgt en variabel fra listen, formateres den og legges til i tekstboksen for deg.

Du kan også skrive liquid direkte i tekstblokken. Du kan for eksempel bruke variabelen {{ order.name }} for å vise bestillingsstrengen som vises i Shopify-administrator, som order-123.

Fordi Flow bruker GraphQL Admin API til å hente data du bruker i Liquid, bruker variabelsyntaksen «camel case». For å hente datoen et produkt ble opprettet, angir du for eksempel {{ product.createdAt }}. Hvis du bruker Liquid-syntaksen i et Shopify-tema, angir du {{ product.created_at }}.

Betingelsesbaserte og iterasjonsbaserte Liquid-tagger

Av og til kan det være lurt å bruke Liquid-tagger til å gjøre følgende:

  • Skrive betingelsesbaserte erklæringer, som å se om totalsummen for en bestilling er større enn 100 USD
  • Gå gjennom en liste med objekter, som å returnere data for hver varelinje i en bestilling

Du kan bruke Liquid-tagger til å skrive disse erklæringene og gå gjennom objekter.

Følgende Liquid viser for eksempel bestillingsnummeret hvis totalsummen for bestillingen er større enn 100 USD:

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

Du kan også bruke en for-løkke til å gå gjennom en liste med objekter, som varelinjer i en bestilling. Følgende Liquid-kode viser for eksempel navnet på hver varelinje i en bestilling:

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

Flow støtter også følgende betingede Liquid- (eller kontrollflyt)-merker:

Flow støtter også følgende Liquid-iterasjonsmerker:

Filtre

Med filtre kan du endre data i Liquid. Flow støtter alle Liquid-filtre med åpen kildekode.

Følgende Liquid-kode fjerner for eksempel et prefiks fra bestillingsnavnet og returnerer det som gjenstår: {{ order.name | remove: "Order-" }}

I tillegg til standardfiltre for Liquid, gir Flow datofiltre for å hente en dato som er relativ til en annen dato for å støtte utløseren Planlagt tid og funksjonen Hent data. Disse filtrene er: date_minus og date_plus.

Slik returnerer du en dato én dag i fremtiden:{{ "now" | date_plus: "1 day" }}

Slik returnerer du en dato én dag i fortiden:{{ "now" | date_minus: "1 day" }}

Disse filtrene godtar second, minute, day, week, month og year som varighetsenhet, både i entall (som second) og flertall (som seconds). I tillegg til dette formatet kan du også oppgi et heltall (antall sekunder). For eksempel:{{ "now" | date_minus: 3600 }}

Du kan også oppgi en ISO8601-varighetsstreng, der P1Y2D betyr 1 år og 2 dager:{{ "now" | date_minus: "P1Y2D" }}

Hensyn ved bruk av Liquid-variabler i filtre

  • Flow støtter ikke punktnotasjon, som er tilgjengelig for noen filtre. Flow støtter for eksempel {{ order.lineItems | size }}, men ikke {{ order.lineItems.size }}.
  • Flow støtter ikke punktnotasjon for metafelter. Du kan for eksempel ikke bruke {{ order.metafields.custom.hold_note }}. I stedet må du kjøre en løkke over metafeltene, som vist i eksemplene.
  • Flow støtter ikke bruk av indekser for å hente elementer i en liste. Du kan for eksempel ikke bruke {{ order.lineItems[0].title }}. Du må i stedet kjøre en løkke over varelinjene, som vist i eksemplene.

Eksempler

For å få et bedre inntrykk av hvordan du kan bruke Liquid-variabler kan du se følgende eksempler.

URL-adresser for resultater for ressurser

Du ønsker å returnere URL-adresser for kunde, bestilling og produkt som er involvert i en arbeidsflyt.

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

Konverter en liste med tagger til et metafelt

Du vil konvertere et sett med tagger til et metafelt som er en liste med énlinjes tekstfelter. Du oppretter en arbeidsflyt ved hjelp av utløseren Produkt lagt til i butikk, og bruker handlingen Oppdater produktmetafelt. Legg til følgende Liquid-kode i seksjonen Verdi for handlingen Oppdater produktmetafelt. Dette eksempelet forutsetter at du bare trenger å angi verdiene én gang når produktet opprettes, og at produktet har to relevante tagger: color:red og color:orange.

Liquid-eksempel for å angi listen for et énlinjes tekstfelt.
OvertreUtdata
{% 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","appelsin"]

Skriv en dynamisk e-postmelding for en bestilling

Du ønsker å opprette en arbeidsflyt for å sende en e-postmelding til en ansatt når en kunde bruker mer enn 500 USD på en bestilling. Du oppretter en arbeidsflyt ved hjelp av utløseren Bestilling opprettet, angir en betingelse som er sann hvis totalsummen for bestillingen er over 500 USD, og bruker handlingen Send intern e-postmelding. Bruk følgende variabler i seksjonen Melding for handlingen Send intern e-postmelding.

Eksempel på bruk av variabler for å oppgi kundeopplysninger
OvertreUtdata
Send en personlig takkemelding til {{ order.customer.firstName }} {{ order.customer.lastName }}({{ order.customer.email }}) for å ha lagt inn en bestilling på {{ order.totalPriceSet.shopMoney.amount }} USD .Send en personlig takkemelding til Jeanne Dupong (jeanne@example.com) for å ha lagt inn en bestilling på 763,42 USD.

Skriv en dynamisk e-postmelding for et produkt med lav lagerbeholdning

Du bestemmer deg for å at du må informere et personalmedlem når lagerantallet blir lavt og det må legges inn en bestilling for nye lagervarer. Du oppretter en arbeidsflyt som starter med utløseren Lagerantall endret, og angir betingelsen som sann hvis lagerantallet før er mindre enn eller lik 10. I delen Melding for handlingen Send intern e-post bruker du følgende variabler.

Eksempler på bruk av variabler for å oppgi vareopplysninger.
OvertreUtdata
Bestill mer av {{ product.title }}. Send en e-post til owner@store.com for å bekrefte at de har mottatt innkjøpsordren.Bestill mer av Leggings med høyt liv – Sort. Send en e-post til owner@store.com for å bekrefte at de har mottatt innkjøpsordren.

Skriv en dynamisk e-postmelding for å varsle personalet om en falsk bestilling

Du vil kansellere bestillinger med et høyt risikonivå, men foretrekker at personalet manuelt kansellerer bestillingen. Du oppretter en arbeidsflyt som starter med utløseren Bestilling opprettet, og angir en betingelse som er sann hvis risikonivået for bestillingen tilsvarer høyt. I delen Melding for handlingen Send intern e-post bruker du følgende variabler.

Eksempler på bruk av variabler for oppgi informasjon om en falsk bestilling.
OvertreUtdata
Shopify-butikken vår har mottatt en bestilling med høy svindelrisiko. Vi vil gjerne kansellere denne bestillingen umiddelbart, før den sendes i produksjon:

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

Bekreft den nye bestillingsstatusen. Takk!
Shopify-butikken vår har mottatt en bestilling med høy svindelrisiko. Vi vil gjerne kansellere denne bestillingen umiddelbart, før den sendes i prdouksjon:

#1001
Dupont, Jeanne
jeanne@example.com

Bekreft den nye bestillingsstatusen. Takk!

Returner varelinjer for en bestilling ved hjelp av en for-løkke

Når en bestilling er mottatt, kan det være nyttig å sende en melding som inneholder produktene som er bestilt. Dette kan du gjøre ved å bruke for loop, som kjører en blokk med kode gjentatte ganger. Tekstfelter som støtter variabler støtter også for-lokker og forloop-objektet.

Du vil for eksempel opprette en arbeidsflyt som returnerer en liste over alle SKU-er og antall i en bestilling. I delen Melding for handlingen Send intern e-post bruker du følgende variabler.

Eksempel på bruk av en for-loop for å oppgi bestillingsinformasjon.
OvertreUtdata
Bestillingssammendrag:
{% for a in order.lineItems %}
SKU: {{a.sku}} ( {{a.quantity}} ),
{% endfor %}
Bestillingssammendrag:
8987097979 (50)
8877778887 (3)
888998898B (1)

Returner varelinjer for en bestilling ved hjelp av en for-løkke med tilleggsinformasjon

Du bestemmer deg for å legge til mer informasjon i e-posten, inkludert produktnavn, SKU-er, pris per vare og kundens leveringsinformasjon. I delen Melding for handlingen Send intern e-post bruker du følgende variabler.

Eksempel på bruk av en for-loop for å gi mer omfattende bestillingsinformasjon.
OvertreUtdata
Bestillingssammendrag:
{% for a in order.lineItems %}
Produkt: {{a.title}}
SKU: {{a.sku}}
Pris (per vare): {{a.originalUnitPriceSet.shopMoney.amount}} USD
Antall: {{a.quantity}}
{% endfor %}
Bestillingssammendrag:
Produkt: Leggings med høyt liv – Sort
SKU: 8987097979
Pris (per vare): 8,49 USD
Antall: 5
Produkt: Gymsokker – Blå
SKU: 888998898B
Pris (per vare): 5,61 USD
Antall: 2

Returner noen varelinjer ved å kombinere en for-løkke med en if-erklæring

Du har behov for å spore solgte varer som leveres av en bestemt leverandør. I delen Melding for handlingen Send intern e-post bruker du følgende variabler og legger ved en if-kommando i for loop.

Eksempel på bruk av en for-loop og en if-kommando for å oppgi bestillingsinformasjon for bestemte leverandører.
OvertreUtdata
Acme-produkt solgt:
{% for x in order.lineItems %}
{% if x.vendor == 'acme-vendor' %}
Produktnavn: {{x.title}}
SKU: {{x.sku}}
{% endif %}
{% endfor %}
Acme-produkt solgt:
Produktnavn: Leggings med høyt liv – Sort
SKU: 8987097979

Kompliserte dataobjekter i Shopify Flow

Flow gir deg tilgang til nesten alle data i GraphQL Admin API. Dette inkluderer komplekse dataobjekter, som lister og objekter. Det er imidlertid noen begrensninger i hva du kan gjøre med disse objektene. Seksjonen oppsummerer disse begrensningene og inneholder eksempler på hvordan de fungerer.

I stedet for å anrope lister og objekter direkte, bør du kjøre en løkke gjennom listen og bare inkludere de feltene du ønsker.

I stedet for å kalle {{ order.lineItems }} direkte, kan du for eksempel bruke følgende format til å anrope bestemt felter. Disse eksemplene inkluderer alle felter som ville vært inkludert ved å anrope listen eller objektet direkte. Kopier og lim inn feltene du trenger.

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 %}
            ],

            "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 %}
    ]
}
Finner du ikke svarene du leter etter? Vi er her for å hjelpe deg.