Shopify Flow'daki değişkenler
Değişkenler, iş akışı çalıştırıldığında değerlerle değiştirilen yer tutuculardır. Bu değişkenler, iş akışlarınıza dahil olan müşterilerin, siparişlerin ve ürünlerin özniteliklerini tanımlar. Örneğin sipariş numarası, sipariş fiyatı, müşteri adı vb. için değişkenler vardır.
Flow, Shopify temalarının kullandığından farklı bir Liquid sürümü kullanır ve GraphQL Admin API üzerinden kullanılabilen tüm değişkenlere erişir.
Değişkenlerin çoğunun adları kendini tarif eder. Örneğin {{ product.title }}
, ürünün adını görüntüleyen değişkendir. Mesaj gönderildiğinde bu değişken, sipariş edilen ürünün adıyla değiştirilir: Large Coffee Mug
.
İşlemlere değişken ekleme
Değişken ekle bağlantısını içeren herhangi bir metin alanına değişken ekleyebilirsiniz. İlgili alanın altındaki Değişken ekle bağlantısına tıklayın ve ardından listeden bir değişken seçin.
Değişken ekle listesindeki değişkenler, yalnızca seçtiğiniz tetikleyici için geçerli olan değişkenleri görebilmeniz amacıyla filtrelenir. Listeden bir değişken seçtikten sonra, değişken doğru şekilde biçimlendirilir ve sizin için metin kutusuna eklenir.
Flow, neredeyse tüm GraphQL Admin API'si alanlarını destekler.
Liquid değişkenleri
Liquid kodu yazma konusunda deneyim sahibi bir geliştiriciyseniz değişkenlerinizi yazmak veya Değişken ekle bağlantısını kullanarak eklediğiniz değişkenlerinizi düzenlemek için Liquid'i kullanabilirsiniz. Daha fazla bilgi edinmek için GraphQL Admin API Referansı'na bakın.
Koşul ve yineleme etiketleri
İş akışı mesajlarınıza Liquid değişken etiketlerini manuel olarak ekleyebilirsiniz. Mesajlarınıza daha fazla bilgi eklemek için bu etiketleri kullanabilirsiniz.
Örneğin, bir siparişin satır öğeleri gibi nesnelerin listesini yinelemek için bir for loop
nesnesi kullanabilirsiniz. Bu etiketlerle, bir siparişte her bir satır öğesi için ürün başlık, SKU, Fiyat ve adet gibi ayrıntıları içeren mesajlar oluşturabilir ve alıcılarınızı bu bilgileri online olarak aramak zorunda kalmaktan kurtarabilirsiniz.
Flow, aşağıdaki Liquid koşul (veya kontrol akışı) etiketlerini destekler:
- if
- unless
- elsif/else
- case/when
- and/or (birden fazla koşul)
Flow, aşağıdaki Liquid yineleme etiketlerini de destekler:
Filtreler
Flow aşağıdaki Liquid filtrelerini destekler:
Filtre adı | Filtre türü |
---|---|
abs | Matematik |
append | Dize |
at_least | Matematik |
at_most | Matematik |
capitalize | Dize |
ceil | Matematik |
concat | Dizi |
tarih | Ek |
default | Ek |
divided_by | Matematik |
downcase | Dize |
escape | Dize |
gerekir | Dizi |
floor | Matematik |
join | Dizi |
last | Dizi |
lstrip | Dize |
harita | Dizi |
minus | Matematik |
modulo | Matematik |
newline_to_br | Dize |
+ | Matematik |
prepend | Dize |
remove | Dize |
remove_first | Dize |
replace | Dize |
replace_first | Dize | reverse | Dizi |
round | Matematik |
rstrip | Dize |
boyut | Dizi |
slice | Dize |
sıralama | Dizi |
split | Dize |
strip | Dize |
strip_html | Dize |
strip_newlines | Dize |
kez | Matematik |
truncate | Dize |
truncatewords | Dize |
uniq | Dizi |
upcase | Dize |
url_encode | Dize |
where | Dizi |
Değişken örnekleri
Örneğin, müşteri bir siparişte 500 USD üzerinde harcama yaptığında bir çalışanınıza e-posta göndermek için iş akışı oluşturmak istiyorsunuz. Sipariş oluşturuldu tetikleyicisini kullanarak bir iş akışı oluşturur, sipariş toplamı 500 USD'nin üzerinde olması hâlinde doğru olan bir koşul belirler ve Dahili e-posta gönder işlemini kullanırsınız. Dahili e-posta gönder işleminin Mesaj bölümünde aşağıdaki değişkenleri kullanabilirsiniz.
Input | Çıktı |
---|---|
Lütfen {{ order.customer.firstName }} {{ order.customer.lastName }} ({{ order.customer.email }}) adlı kullanıcıya {{ order.totalPriceSet.shopMoney.amount }} USD tutarında sipariş verdiği için kişisel bir teşekkür notu gönderin. | Lütfen Jeanne Dupont (jeanne@example.com) adlı kullanıcıya 763,42 USD tutarında sipariş verdiği için bir teşekkür notu gönderin. |
Ürün envanteri azaldığında ve daha fazla stok için sipariş verilmesi gerektiğinde bir personeli bilgilendirmeniz gerektiğine karar verdiniz. Envanter adedi değişti tetikleyicisiyle başlayan bir iş akışı oluşturursunuz ve önceki envanter adedi 10'dan küçük veya 10'a eşitse doğru olan bir koşul ayarlarsınız. Dahili e-posta gönder işleminin Mesaj bölümünde aşağıdaki değişkenleri kullanabilirsiniz.
Input | Çıktı |
---|---|
Lütfen {{ product.title }} adlı ürünü yeniden sipariş edin. owner@store.com adresine e-posta göndererek satın alma emrini aldıklarını doğrulayın. | Lütfen Yüksek Bel Tayt - Siyah adlı ürünü yeniden sipariş edin. owner@example.com adresine e-posta göndererek satın alma emrini aldıklarını doğrulayın. |
Risk düzeyi yüksek olan siparişleri iptal etmek istiyor ancak personelinizin siparişi manuel olarak iptal etmesini tercih ediyorsunuz. Sipariş oluşturuldu tetikleyicisiyle başlayan bir iş akışı oluşturur ve siparişin risk düzeyi yüksekse doğru olan bir koşul belirlersiniz. Dahili e-posta gönder işleminin Mesaj bölümünde aşağıdaki değişkenleri kullanabilirsiniz.
Input | Çıktı |
---|---|
Shopify mağazamız, yüksek sahtekarlık riski bulunan bir sipariş aldı. Bu siparişi, üretime gönderilmeden önce hemen iptal etmek istiyoruz: {{ order.name }} {{ order.billingAddress.lastName }}, {{ order.billingAddress.firstName }} {{ order.email }} Lütfen yeni sipariş durumunu onaylayın. Teşekkür ederiz. |
Shopify mağazamız, yüksek sahtekarlık riski bulunan bir sipariş aldı. Bu siparişi, üretime gönderilmeden önce hemen iptal etmek istiyoruz: #1001 Dupont, Jeanne jeanne@example.com Lütfen yeni sipariş durumunu onaylayın. Teşekkür ederiz. |
For loop örnekleri
Bir sipariş alındığında, sipariş edilen ürünleri içeren bir mesaj göndermek faydalı olabilir. Bir kod bloğunu aralıksız olarak çalıştıran for loop
öğesini kullanarak bunu gerçekleştirebilirsiniz. Değişkenleri destekleyen metin alanları for loops'u ve forloop nesnesini de destekler.
Örneğin, bir siparişteki tüm SKU'ların ve adetlerin listesini döndüren bir iş akışı oluşturmak istiyorsunuz. Dahili e-posta gönder işleminin Mesaj bölümünde aşağıdaki değişkenleri kullanabilirsiniz.
Input | Çıktı |
---|---|
Sipariş özeti: {% for a in order.lineItems %} SKU: {{a.sku}} ( {{a.quantity}} ), {% endfor %} |
Sipariş özeti: 8987097979 (50) 8877778887 (3) 888998898B (1) |
E-postaya ürün adı, SKU'lar, ürün başına fiyat ve müşterinin kargo bilgileri de dahil olmak üzere daha fazla bilgi eklemeye karar verdiniz. Dahili e-posta gönder işleminin Mesaj bölümünde aşağıdaki değişkenleri kullanabilirsiniz.
Input | Çıktı |
---|---|
Sipariş özeti: {% for a in order.lineItems %} Ürün: {{a.title}} SKU: {{a.sku}} Fiyat (birim başına): {{a.originalUnitPriceSet.shopMoney.amount}} USD Adet: {{a.quantity}} {% endfor %} |
Sipariş özeti: Ürün: Yüksel Bel Tayt - Siyah SKU: 8987097979 Fiyat (birim başına): 8,49 USD Adet: 5 Ürün: Spor Çorabı - Mavi SKU: 888998898B Fiyat (birim başına): 5,61 USD Adet: 2 |
Belirli bir satıcı tarafından tedarik edilen, satılan ürünleri takip etmeniz gerekiyor. Dahili e-posta gönder işleminin Mesaj bölümünde, aşağıdaki değişkenleri kullanır ve for loop
yapınıza if
ifadesi eklersiniz.
Input | Çıktı |
---|---|
Satılan Acme ürünü: {% for x in order.lineItems %} {% if x.vendor == 'acme-vendor' %} Ürün adı: {{x.title}} SKU: {{x.sku}} {% endif %} {% endfor %} |
Satılan Acme ürünü: Ürün adı: Yüksek Bel Tayt - Siyah SKU: 8987097979 |
Shopify Flow'daki karmaşık veri nesneleri
Shopify Flow, aşağıdaki nedenlerden dolayı dizilerin ve nesnelerin çıktısını desteklemez:
- Gerekli olmayan verilerin çıktısının verilmesi GraphQL API'de kullanımdan kaldırılmıştır ve iş akışınızın başarısız olmasına neden olabilecek büyüklükte sorgu boyutları oluşturabilir.
- Yeni özellikler eklendiğinde iş akışınızı bozabilecek yeni API alanları da eklenir.
Çok fazla veri otomatik olarak gönderilirse iş akışı başarısız olur. Dizileri ve nesneleri doğrudan çağırmak yerine diziler üzerinde döngü oluşturun ve yalnızca istediğiniz alanları dahil edin.
Örneğin, {{ order.lineItems }}
dizisini doğrudan çağırmak yerine belirli alanları çağırmak için aşağıdaki biçimi kullanın. Diziyi veya nesneyi doğrudan çağırarak dahil edilebilecek tüm alanlar örneklerde yer alır. İhtiyacınız olan alanları kopyalayıp yapıştırın.
{% 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 %}
]
}