Променливите на Liquid са заместващи текстове, дефинирани в Liquid, които се заменят със стойности от GraphQL Admin API, когато се изпълнява работен процес. Променливите могат да описват атрибутите на клиентите, поръчките и продуктите, които са включени във Вашите работни процеси, като например номера на поръчката, цената на поръчката или името на клиента. Променливите могат да се използват в условия, за да контролират логиката във Вашия работен процес, или за извеждане на данни от дадено действие.
Добавяне на променливи в работни процеси с помощта на Liquid
Можете да добавяте променливи с помощта на Liquid към всяко текстово поле, което съдържа връзката „Добавяне на променлива“. Кликнете върху връзката „Добавяне на променлива“ под съответното поле и след това изберете променлива от списъка.
Променливите в списъка „Добавяне на променлива“ са филтрирани, така че да използвате само променливите, които се връщат от стъпки преди текущата, като например тригери. Например тригерът „Създадена поръчка“ предоставя ресурси за поръчка и магазин от Admin API, които могат да бъдат вмъкнати като променливи. След като изберете променлива от списъка, тя се добавя в текстовото поле като правилно форматиран Liquid.
Можете също така да пишете Liquid директно в текстовото поле. Например можете да използвате променливата {{ order.name }}, за да се покаже низът на поръчката от администраторския панел на Shopify, като например order-123.
Тъй като Flow използва Admin API за извличане на данните, използвани за Liquid, синтаксисът на променливите използва camel case. Променливите в стил camel case имат първа дума, която започва с малка буква, а следващите думи започват с главна буква, като например firstName или canMarkAsPaid. Например, за достъп до датата на създаване на продукт, въведете {{ product.createdAt }}. Ако използвате синтаксиса на Liquid в тема на Shopify, който не използва camel case, тогава трябва да въведете {{ product.created_at }}.
Условни и итерационни тагове на Liquid
Таговете на Liquid могат да се използват с променливи за изпълнение на следните функции:
Писане на условни изрази, като например определяне дали общата сума на поръчката е по-голяма от 100 USD.
Итериране през списък с обекти, като например извеждане на данни за всеки ред в поръчката.
Можете да използвате тагове на Liquid, за да пишете тези изрази и да итерирате през обекти.
Например следният Liquid код показва номера на поръчката, ако общата ѝ сума е по-голяма от 100 USD:
{% if order.totalPriceSet.shopMoney.amount > 100 %}
Order number: {{ order.name }}
{% endif %}
Можете също да използвате цикъл for, за да итерирате през списък с обекти, като например редовете на дадена поръчка. Например следният Liquid код показва името на всеки ред в поръчката:
{% for li in order.lineItems %}
{{ li.title }}
{% endfor %}
Flow поддържа следните условни (или за контрол на потока) тагове на Liquid:
Можете да трансформирате данни от променливи в Liquid с помощта на филтри. Flow поддържа всички Liquid филтри с отворен код.
Например следният Liquid код премахва префикс от името на поръчката и извежда останалата част: {{ order.name | remove: "Order-" }}
Съображения при използване на променливи на Liquid във филтри
Преди да трансформирате променливи с помощта на филтри, прегледайте следните съображения:
Flow не поддържа точкова нотация, която е налична за някои филтри. Например Flow поддържа {{ order.lineItems | size }}, но не и {{ order.lineItems.size }}.
Flow не поддържа точкова нотация за метаполета. Например не можете да използвате {{ order.metafields.custom.hold_note }}. Вместо това трябва да преминете през метаполетата в цикъл, както е описано в примерите.
Flow не поддържа използването на индекси за достъп до артикули в списък. Например не можете да използвате {{ order.lineItems[0].title }}. Вместо това трябва да преминете през редовете в цикъл, както е описано в примерите.
Филтри за дата
В допълнение към стандартните филтри на Liquid, Flow предоставя филтри за дата, за да се получи дата, която е относителна спрямо друга дата, за поддръжка на тригера „Планирано време“ и функциите „Получаване на данни“. Тези филтри са: date_minus и date_plus. Например:
За връщане на дата един ден в бъдещето: {{ "now" | date_plus: "1 day" }}
За връщане на дата един ден в миналото: {{ "now" | date_minus: "1 day" }}
Тези филтри приемат second, minute, day, week, month и year като единица за продължителност, както в единствено число (като second), така и в множествено (като seconds). Можете също така да предоставите следните типове персонализируеми единици:
Цяло число, представляващо броя секунди: {{ "now" | date_minus: 3600 }}, където 3600 е еквивалентно на 1 час.
Shopify Flow предоставя криптографски филтри за хеширане и създаване на кодове за удостоверяване на съобщения, базирани на хеш (HMAC). Тези филтри са полезни за създаване на уникални идентификатори, контролни суми или за интегриране със системи на трети страни, които изискват специфични хеш формати.
Филтри за хеширане
Shopify Flow поддържа следните типове филтри за хеширане:
blake3 – създава BLAKE3 хеш (препоръчва се за обща употреба).
За общи цели на хеширане и нови имплементации трябва да използвате blake3, тъй като той предлага по-добра ефективност и сигурност в сравнение с по-старите алгоритми. Въпреки това, sha256, sha1 и md5 са налични за съвместимост със системи на трети страни.
Пример за употреба:
{{ „hello world“ | blake3 }} връща BLAKE3 хеш на „hello world“.
HMAC филтри
За да създадете HMAC с таен ключ, използвайте един от следните поддържани филтри:
Искате да изведете URL адресите за клиента, поръчката и продукта, които участват в даден работен процес.
# 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>
Конвертиране на списък с тагове в метаполе
Искате да конвертирате набор от тагове в метаполе, което е списък с едноредови текстови полета. Вие създавате работен процес, като използвате тригера „Продукт, добавен в магазина“ и действието „Актуализиране на метаполе на продукт“. В раздела „Стойност“ на действието „Актуализиране на метаполе на продукт“ добавяте следния Liquid код. Този пример предполага, че трябва да зададете стойностите само веднъж при създаването на продукта и че продуктът има два съответни тага: color:red и color:orange.
Примерен Liquid за задаване на списък с едноредово текстово поле.
Искате да създадете работен процес за изпращане на имейл до служител, когато клиент похарчи повече от 500 $ за поръчка. Вие създавате работен процес, като използвате тригера „Създадена поръчка“, задавате условие, което е вярно, ако общата сума на поръчката е над 500 $, и използвате действието „Изпращане на вътрешен имейл“. В раздел „Съобщение“ на действието „Изпращане на вътрешен имейл“ използвате следните променливи.
Пример за използване на променливи за предоставяне на подробности за клиента.
Въвеждане
Извеждане
Please send a personal thank you note to {{ order.customer.firstName }} {{ order.customer.lastName }}({{ order.customer.email }}) for placing an order for $ {{ order.totalPriceSet.shopMoney.amount }}.
Изпратете лична благодарствена бележка на Jeanne Dupont (jeanne@example.com) за направена поръчка на стойност 763,42 $.
Съставяне на динамично имейл съобщение за продукт с ниска наличност
Вие решавате, че трябва да информирате член на персонала, когато складовата наличност на даден продукт намалява и трябва да се направи поръчка за още стока. Вие създавате работен процес, който започва с тригера „Променено количество в складовата наличност“ и задавате условие, което е вярно, ако предишното количество в складовата наличност е по-малко или равно на 10. В раздел „Съобщение“ на действието „Изпращане на вътрешен имейл“ използвате следните променливи.
Пример за използване на променливи за предоставяне на подробности за артикул.
Въвеждане
Извеждане
Please reorder {{ product.title }}. Email owner@store.com to verify that they've received the purchase order.
Поръчайте отново „Клин с висока талия – черен“. Изпратете имейл до owner@example.com, за да проверите дали са получили поръчката за покупка.
Съставяне на динамично имейл съобщение за уведомяване на персонала за фалшива поръчка
Искате да анулирате поръчки с високо ниво на риск, но предпочитате персоналът Ви ръчно да анулира поръчката. Вие създавате работен процес, който започва с тригера „Създадена поръчка“, и задавате условие, което е вярно, ако нивото на риск на поръчката е равно на „високо“. В раздел „Съобщение“ на действието „Изпращане на вътрешен имейл“ използвате следните променливи.
Пример за използване на променлива за предоставяне на информация за фалшива поръчка.
Въвеждане
Извеждане
Our Shopify store has received an order with a high risk of fraud. We would like to cancel this order right away, before it is sent to production:
{{ order.name }}
{{ order.billingAddress.lastName }}, {{ order.billingAddress.firstName }}
{{ order.email }}
Please confirm the new order status. Thanks!
Нашият магазин в Shopify получи поръчка с висок риск от измама. Бихме искали да анулираме тази поръчка незабавно, преди да бъде изпратена за производство:
#1001
Dupont, Jeanne
jeanne@example.com
Моля, потвърдете новото състояние на поръчката. Благодаря!
Извеждане на редовете на поръчка с помощта на цикъл for
Когато се получи поръчка, може да е полезно да се изпрати съобщение, което съдържа поръчаните продукти. Можете да направите това, като използвате for loop, който многократно изпълнява блок от код. Текстовите полета, които поддържат променливи, също поддържат цикли for и обекта forloop.
Например, искате да създадете работен процес, който връща списък с всички складови единици на продукти (SKU) и количества в дадена поръчка. В секцията „Съобщение“ на действието „Изпращане на вътрешен имейл“ използвате следните променливи.
Пример за използване на for цикъл за предоставяне на информация за поръчката.
Въвеждане
Извеждане
Order summary:
{% for a in order.lineItems %}
{{a.sku}} ( {{a.quantity}} )
{% endfor %}
Резюме на поръчката:
8987097979 (50)
8877778887 (3)
888998898B (1)
Извеждане на редовете от поръчка с помощта на for цикъл с допълнителна информация
Решавате да добавите повече информация към имейла, включително името на продукта, складовите единици на продукти (SKU), цената за артикул и информацията за доставка на клиента. В секцията „Съобщение“ на действието „Изпращане на вътрешен имейл“ използвате следните променливи.
Пример за използване на for цикъл за предоставяне на по-подробна информация за поръчката.
Въвеждане
Извеждане
Order summary:
{% for a in order.lineItems %}
Product: {{a.title}}
SKU: {{a.sku}}
Price (per unit): ${{a.originalUnitPriceSet.shopMoney.amount}}
Quantity: {{a.quantity}}
{% endfor %}
Резюме на поръчката:
Продукт: High Waist Leggings - Black
SKU: 8987097979
Цена (за единица): $8.49
Количество: 5
Продукт: Athletic Socks - Blue
SKU: 888998898B
Цена (за единица): $5.61
Количество: 2
Извеждане на някои редове чрез комбиниране на for цикъл с if оператор
Трябва да проследявате продадените артикули, които се доставят от конкретен доставчик. В секцията „Съобщение“ на действието „Изпращане на вътрешен имейл“ използвате следните променливи и включвате if оператор във Вашия for цикъл.
Пример за използване на for цикъл и if оператор за предоставяне на информация за поръчки за конкретни доставчици.
Въвеждане
Извеждане
Acme product sold:
{% for x in order.lineItems %}
{% if x.vendor == 'acme-vendor' %}
Product name: {{x.title}}
SKU: {{x.sku}}
{% endif %}
{% endfor %}
Продаден продукт Acme:
Име на продукта: High Waist Leggings - Black
SKU: 8987097979
Сложни обекти с данни в Shopify Flow
Flow Ви позволява да осъществявате достъп до почти всички данни, които се намират в GraphQL Admin API. Това включва сложни обекти с данни, като например списъци и обекти. Съществуват обаче някои ограничения за това какво можете да правите с тези обекти. В тази секция са описани тези ограничения и са дадени примери как да работите с тях.
Вместо да извиквате списъци и обекти директно, трябва да обходите списъка в цикъл и да включите само полетата, които желаете.
Например, вместо да извиквате директно {{ order.lineItems }}, използвайте следния формат, за да извикате конкретни полета. Тези примери включват всички полета, които биха били включени при директно извикване на списъка или обекта. Копирайте и поставете полетата, от които се нуждаете.
Текст
{% for li in order.lineItems %}
{% comment %}li.contract - omitted{% endcomment %}