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.
Bu sayfada
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.
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:
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:
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
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.
Kaynaklar için çıktı URL'leri
Bir iş akışında yer alan müşteri, sipariş ve ürün URL'lerinin çıktısını almak istiyorsunuz.
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
.
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.
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.
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.
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.
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.
Input | Çıktı |
---|---|
Sipariş özeti: {% for a in order.lineItems %} |