Shopify Flow'daki Liquid değişkenleri

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. Değişkenler, iş akışı mantığınızı kontrol etmek veya bir işlemde verileri uygulamak için koşullar içinde kullanılabilir.

Liquid Hakkında

Liquid, işlemlerdeki değişkenlere erişmek ve Flow'da kod yazmak için kullanılan bir şablon dilidir. Flow, açık kaynaklı kitaplığı en yakından takip eden Liquid varyasyonunu kullanır. Shopify temaları, başka bir Liquid varyasyonunu kullanır. Ancak Liquid'in bu varyasyonu temalara özeldir ve Flow'un desteklediğinden daha fazla filtre ve etiket içerir. Ayrıca, değişkenlere erişmeye yönelik farklı bir sözdizimi de bulunur.

Liquid değişkenleri

Değişken ekle bağlantısını içeren herhangi bir metin alanına Liquid değişkeni 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.

Liquid'i kabul eden alanları gösteren görsel

Değişken ekle listesinde yer alan değişkenler filtrelenir. Böylece, yalnızca mevcut adımdan önceki adımlar (ör. tetikleyiciler) tarafından döndürülen değişkenleri görürsünüz. Örneğin, Sipariş Oluşturuldu tetikleyicisi, sipariş ve mağaza kaynaklarını sağlar. Böylece, siparişle ilgili değişkenleri veya GraphQL Admin API'de erişilebilen mağaza ayarlarınızı kullanabilirsiniz. Listeden bir değişken seçtikten sonra, değişken doğru şekilde biçimlendirilir ve sizin için metin kutusuna eklenir.

Liquid'i doğrudan metin blokuna da yazabilirsiniz. Örneğin, {{ order.name }} değişkenini kullanarak Shopify yöneticisinde gösterilen sipariş dizesini (ör. sipariş-123) görüntüleyebilirsiniz.

Flow, Liquid'de kullandığınız verileri almak için GraphQL Admin API'yi kullandığından değişken sözdizimi "camel case" kullanır. Örneğin, bir ürünün oluşturulduğu tarihe erişmek için {{ product.createdAt }} değerini girin. Bir Shopify temasında Liquid sözdizimi kullanıyorsanız {{ product.created_at }} değerini girersiniz.

Koşullu ve yineleme Liquid etiketleri

Bazen aşağıdaki işlemleri gerçekleştirmek için Liquid etiketlerini kullanabilirsiniz:

  • Sipariş toplamının 100 ABD dolarından fazla olup olmadığını belirleme gibi koşullu ifadeler yazma
  • Siparişteki her satır öğesi için veri çıktısı almak gibi bir nesne listesinde yineleme yapma

Bu ifadeleri yazmak ve nesneleri yinelemek için Liquid etiketlerini kullanabilirsiniz.

Örneğin, sipariş toplamı 100 ABD dolarından fazlaysa aşağıdaki Liquid sipariş numarasını gösterir:

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

Siparişin satır öğeleri gibi bir nesne listesinde yineleme yapmak için for loop da kullanabilirsiniz. Örneğin, aşağıdaki Liquid, siparişte yer alan her bir satır öğesinin adını gösterir:

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

Flow, aşağıdaki Liquid koşul (veya kontrol akışı) etiketlerini destekler:

Flow, aşağıdaki Liquid yineleme etiketlerini de destekler:

Filtreler

Filtreler, verileri Liquid'de dönüştürebilmenizi sağlar. Flow, tüm açık kaynaklı Liquid filtrelerini destekler.

Örneğin, aşağıdaki Liquid, sipariş adından bir ön eki kaldırır ve kalanın çıktısını verir: {{ order.name | remove: "Order-" }}

Flow, standart Liquid filtrelerine ek olarak başka bir tarihle alakalı tarih almak amacıyla tarih filtreleri sağlayarak Planlanan zaman tetikleyicisini ve Veri alma özelliklerini destekler. Bu filtreler şunlardır: date_minus ve date_plus.

Gelecekteki bir günün tarihini döndürmek için:{{ "now" | date_plus: "1 day" }}

Geçmişteki bir günün tarihini döndürmek için:{{ "now" | date_minus: "1 day" }}

Bu filtreler second, minute, day, week, month ve year değerlerini süre birimi olarak hem tekil (ör. second) hem de çoğul (ör. seconds) halde kabul eder. Bu biçime ek olarak bir tam sayı (saniye sayısı) da sağlayabilirsiniz. Örneğin:{{ "now" | date_minus: 3600 }}

P1Y2D değerinin 1 yıl ve 2 gün anlamına geldiği bir ISO8601 süre dizesi de sağlayabilirsiniz:{{ "now" | date_minus: "P1Y2D" }}

Liquid değişkenlerini filtrelerde kullanma ile ilgili önemli hususlar

  • Flow, bazı filtrelerde kullanılabilen nokta yazımını desteklemez. Örneğin, Flow {{ order.lineItems | size }} değerini destekler ancak {{ order.lineItems.size }} değerini desteklemez.
  • Flow, meta alanlar için nokta yazımını desteklemez. Örneğin, {{ order.metafields.custom.hold_note }} değerini kullanamazsınız. Bunun yerine, meta alanların üzerinde örneklerde açıklandığı şekilde döngü oluşturmanız gerekir.
  • Flow, bir listedeki ürünlere erişmek için dizin kullanımını desteklemez. Örneğin, {{ order.lineItems[0].title }} değerini kullanamazsınız. Bunun yerine, satır öğeleri üzerinde örneklerde açıklandığı şekilde döngü oluşturmanız gerekir.

Örnekler

Liquid değişkenlerinin nasıl kullanılacağını daha iyi anlamak için aşağıdaki örnekleri gözden geçirin.

Meta alan değeri çıktısı alma

Bir e-postadaki sipariş meta alanı değerinin çıktısını almak istiyorsunuz. Meta alan bir dize ve custom ad alanına ve hold_note anahtarına sahip. Bu meta alanın değeri Please wait to deliver this order until April 1. şeklindedir. Sipariş oluşturuldu tetikleyicisini kullanarak bir iş akışı oluşturursunuz 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.

Sipariş meta alanının çıktısını vermek için değişken kullanımı örneği.
Input Çıktı
{% assign hold_note = order.metafields | where: "namespace", "custom" | where: "key", "hold_note" | first %}
Siparişte şu bekleme notu bulunur: {{ hold_note.value }}
Siparişte şu bekleme notu bulunur: Lütfen bu siparişi teslim etmek için 1 Nisan tarihine kadar bekleyin.

Etiket listesini meta alana dönüştürme

Bir etiket kümesini, tek satırlık metin alanlarının listesi olan bir meta alana dönüştürmek istiyorsunuz. Mağazaya ürün eklendi tetikleyicisini kullanarak bir iş akışı oluşturursunuz ve Ürün meta alanını güncelle işlemini kullanırsınız. Ürün meta alanını güncelle işleminin Değer bölümüne aşağıdaki liquid kodunu eklersiniz. Bu örnekte, ürün oluşturulduğunda değerleri yalnızca bir kez ayarlamanız gerektiği ve ürünün iki ilgili etiketi olduğu varsayılmaktadır: color:red ve color:orange.

Tek satırlı metin alanı listesini ayarlamak için örnek Liquid.
Input Çıktı
{% 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: ","}}]
["kırmızı","turuncu"]

Bir sipariş için dinamik e-posta mesajı yazma

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ı halinde 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.

Müşteri bilgilerinin sağlanması için kullanılan değişken örneği.
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.

Düşük stok düzeyine sahip bir ürün için dinamik e-posta mesajı yazma

Ü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.

Ürün bilgilerinin sağlanması için kullanılan değişken örnekleri.
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.

Personele hileli bir siparişle ilgili bilgi vermek için dinamik e-posta mesajı yazma

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.

Hileli bir sipariş hakkında bilgi verilmesi için kullanılan değişken örneği.
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 döngüsünü kullanarak bir siparişin satır öğelerinin çıktısını alma

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.

Sipariş bilgilerini sağlanması için kullanılan for loop örneği.
Input Çıktı
Sipariş özeti:
{% for a in order.lineItems %}
SKU: {{a.sku}} ( {{a.quantity}} ),
{% endfor %}
Sipariş özeti:
8987097979 (50)
8877778887 (3)
888998898B (1)

For döngüsünü ve ek bilgileri kullanarak bir siparişin satır öğelerinin çıktısını alma

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.

Daha kapsamlı sipariş bilgilerinin sağlanması için kullanılan for loop örneği.
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

For döngüsünü if ifadesiyle birleştirerek bazı satır öğelerinin çıktısını alma

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.

Belirli satıcılar için sipariş bilgilerinin sağlanması amacıyla kullanılan for loop ve if ifadesi örneği.
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

Flow, GraphQL Admin API'sinde yer alan neredeyse tüm verilere erişmenize olanak sağlar. Bunlara, listeler ve nesneler gibi karmaşık veri nesneleri de dahildir. Bununla birlikte, bu nesnelerle yapabilecekleriniz konusunda bazı sınırlamalar vardır. Bu bölümde, bu sınırlamalar ana hatlarıyla açıklanmakta ve bunlarla nasıl çalışacağınıza dair örnekler sunulmaktadır.

Listeleri ve nesneleri doğrudan çağırmak yerine listenin üzerinde döngü oluşturun ve yalnızca istediğiniz alanları dahil edin.

Örneğin, {{ order.lineItems }} öğesini doğrudan çağırmak yerine belirli alanları çağırmak için aşağıdaki biçimi kullanın. Listeyi 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.

Shopify ile satış yapmaya hazır mısınız?

Ücretsiz olarak dene