Şablonların sözdizimi ve olanakları

Şablonlarla çalışmanın temelleri

Şablonlar, statik şablonlardan daha fazla olanak sağlayan tanımlı değişkenleri ve özel bir sözdizimini destekler. Yani belirli bir metin, tanımlı kurallara göre dönüştürülür. Twig şablon motoruyla çalıştıysanız, gerekli olan neredeyse her şeyi zaten biliyorsunuz. Bu sayfada mevcut temel işlevsellik açıklanmıştır. Daha fazlasını öğrenmek isteyenler Twig'in resmi belgeleriyle tanışabilir. Ancak Twig'in tüm olanakları şablonlarımızda mevcut değildir, bu nedenle sonucu önizleme işlevi yardımıyla kontrol etmeyi, ayrıca çok sayıda gerçek kullanıcıya yönelik bir kampanya başlatmadan önce kendi hesaplarınıza test gönderimleri yapmayı unutmayın.

Şablonlarda mevcut değişkenler:

  1. subscriber — mevcut abone hakkında bilgi içeren bir nesnedir. Bu değişkenin tam yapısını ayrı bir sayfada görüntüleyebilirsiniz.
  2. campaign — mevcut gönderim kampanyası hakkında bilgi içeren bir nesnedir. Bu değişkenin tam yapısını ayrı bir sayfada görüntüleyebilirsiniz. Bu değişken önizleme modunda veri içermez, çünkü o, herhangi bir gönderim kampanyası bağlamının dışında çalışır.
  3. unsubscribe_url — abonenin mevcut gönderim kampanyasından abonelikten çıkabileceği sayfamıza yönelik bir HTTP bağlantısıdır. Sitenizde kendi abonelik ayarlarınız varsa, sitenize yönlendiren bir abonelikten çıkma bağlantısı kullanabilirsiniz. Abone, istenmeyen bir gönderimden abonelikten çıkmak için basit ve kullanışlı bir olanak bulamazsa, büyük olasılıkla e-postanızı spam olarak işaretler, bu nedenle her e-postada abonelikten çıkma olanağı sağlamanızı öneririz. Bu değişken önizleme modunda mevcut olmayacaktır.

Şablonlarda değişkenler kullanılabilir

Bir değişkeni kullanmak için onu çift süslü parantez içine almak gerekir. Örneğin, test126 değişkenini görüntülemek için {{ test126 }} yazmak gerekir. Büyük-küçük harfe uyulması zorunludur, boşluklar ise — isteğe bağlıdır. Yani {{test126}} veya {{ test126         }} yazılabilir, ancak {{ TESt126 }} — yazılamaz. test126 değişkeni bir örnektir, gerçekte böyle bir değişken bizde yoktur.

Değişken karmaşık bir nesneyse ve kendi özelliklerine sahipse, onlara erişim bir nokta aracılığıyla yapılır. Örneğin, subscriber değişkeninin id özelliğine erişim şöyle görünür: {{ subscriber.id }}. Bu gerçek bir örnektir — şablonlarda subscriber değişkeni mevcuttur ve onun id özelliği vardır. Özelliklerin tam listesini ayrı bir sayfada görüntüleyebilirsiniz. Dizilere köşeli parantez kullanarak indeksle erişilebilir. Bununla birlikte böyle bir indeksin var olduğundan emin olmak gerekir. Örneğin, {{ subscriber.tags[0] }}. Abonenin hiçbir etiketi yoksa, ilk (0 indeksli) etiketi görüntüleme girişimi hiçbir şey görüntülemez (yani programcıların dediği gibi «boş dize» görüntülenir).

Verilerle temel işlemler gerçekleştirilebilir

Matematiksel işlemler desteklenir:

  • toplama {{ price + tax }}
  • çarpma {{ count * 2 }}
  • bölme {{ total / 3 }}

Koşullu operatör (IF)

  • temel if {% if subscriber.is_active %} Gönderime abonesiniz {% endif %}
  • else bloğuna sahip if operatörü {% if subscriber.is_active %} Gönderime abonesiniz {% else %} Gönderimden abonelikten çıktınız {% endif %}
  • Kontrol zinciri {% if subscriber.gender == 'male' %} Erkeksiniz {% elseif subscriber.gender == 'female' %} Kadınsınız {% elseif subscriber.gender == '' %} Cinsiyetiniz belirtilmemiş {% endif %}

if operatörünün mutlaka bir açılış etiketi  {% if condition %} ve bir kapanış etiketi {% endif %} vardır. İçine herhangi bir sayıda  {% elseif condition %} bölümü yerleştirilebilir. Ayrıca isteğe bağlı olarak, yürütme ona ulaşırsa ek koşullar olmadan devreye girecek bir {% else %} bölümü eklenebilir. Yani if operatörünün önceki tüm bölümlerinin devreye girme koşulları (condition) sağlanmadıysa.
 

Döngüler (FOR)

Döngüler listeleri görüntülemek için gereklidir. items değişkeninde saklanan bir listemiz olduğunu düşünelim. İşte nasıl gezilebilir:

{% for item in items %}
  {{ item }}
{% endfor %}

item değişkeninin değeri, döngünün her yinelemesinde farklı olacaktır. Döngünün içinde ayrıca mevcut yinelemeye ilişkin bazı başka değişkenler de mevcuttur:

  • loop.index — yineleme numarası, 1'den başlar
  • loop.first — bu ilk yineleme mi? (true/false)
  • loop.last — bu son yineleme mi? (true/false)

Döngü, verilerin varlığının kontrolüyle birleştirilebilir:

{% for item in items %}
  {{ item }}
{% else %}
  items dizisi boş
{% endfor %}