Değişkenler, iş akışı çalıştırıldığında GraphQL Admin API'den gelen değerlerle değiştirilen, Liquid içinde tanımlanan yer tutuculardır. Sipariş numarası, sipariş fiyatı, müşteri adı ve benzeri gibi iş akışlarınıza dahil olan müşterilerin, siparişlerin ve ürünlerin özniteliklerini tanımlayabilir. Değişkenler, iş akışı mantığınızı kontrol etmek veya bir işlemde verileri uygulamak için koşullar içinde kullanılabilir.
Değişken ekle bağlantısını içeren herhangi bir metin alanına Liquid kullanarak 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 filtrelenir, böylece yalnızca tetikleyiciler gibi geçerli adımdan önceki adımlar tarafından döndürülen değişkenleri kullanırsınız. Örneğin, Sipariş Oluşturuldu tetikleyicisi, Yönetici API'sinden değişken olarak eklenebilen sipariş ve shop kaynakları sağlar. Siz listeden bir değişken seçtikten sonra düzgün bir şekilde Liquid biçiminde oluşturularak 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'e yönelik kullandığınız verileri almak için 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:
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.
# 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>
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.
### Bir sipariş için dinamik e-posta mesajı yazma {#dynamic-email}
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 {#dynamic-email-product}
Ü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 {#dynamic-email-fraud}
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:
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 {#output-line-items}
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 %}
### For döngüsünü ve ek bilgileri kullanarak bir siparişin satır öğelerinin çıktısını alma {#output-line-items-additional}
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 %}
### For döngüsünü if ifadesiyle birleştirerek bazı satır öğelerinin çıktısını alma {#output-line-items-if}
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 {#complex-data-objects}
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.
Text
{% for li in order.lineItems %}
{% comment %}li.contract - omitted{% endcomment %}