Składnia i możliwości szablonów

Podstawy pracy z szablonami

Szablony obsługują zdefiniowane zmienne i specjalną składnię, która daje więcej możliwości niż statyczne szablony. Czyli określony tekst jest przekształcany według zdefiniowanych reguł. Jeśli pracowałeś z systemem szablonów Twig, to znasz już prawie wszystko, co potrzebne. Na tej stronie opisano podstawową dostępną funkcjonalność. Ci, którzy chcą dowiedzieć się więcej, mogą zapoznać się z oficjalną dokumentacją Twig. Jednak nie wszystkie możliwości Twig są dostępne w naszych szablonach, dlatego nie zapominaj sprawdzać wyniku za pomocą funkcji podglądu, a także robić testowe wysyłki na własne konta przed uruchomieniem kampanii na dużą liczbę rzeczywistych użytkowników.

Dostępne zmienne w szablonach:

  1. subscriber — to obiekt zawierający informacje o bieżącym subskrybencie. Pełną strukturę tej zmiennej można zobaczyć na osobnej stronie.
  2. campaign — to obiekt zawierający informacje o bieżącej kampanii wysyłki. Pełną strukturę tej zmiennej można zobaczyć na osobnej stronie. Ta zmienna nie będzie zawierać danych w trybie podglądu, ponieważ działa on poza kontekstem jakiejkolwiek kampanii wysyłki.
  3. unsubscribe_url — to link HTTP do naszej strony, na której subskrybent może zrezygnować z bieżącej kampanii wysyłki. Jeśli masz własne ustawienia subskrypcji w swojej witrynie, możesz używać linku do rezygnacji prowadzącego do Twojej witryny. Jeśli subskrybent nie znajdzie prostej i wygodnej możliwości rezygnacji z niechcianej wysyłki, prawdopodobnie oznaczy Twoją wiadomość jako spam, dlatego zalecamy w każdej wiadomości udostępniać możliwość rezygnacji. Ta zmienna nie będzie dostępna w trybie podglądu.

W szablonach można używać zmiennych

Aby użyć zmiennej, należy ją opakować w podwójne nawiasy klamrowe. Na przykład, aby wyświetlić zmienną test126, należy napisać {{ test126 }}. Zachowanie wielkości liter (wielkie i małe litery) jest obowiązkowe, a spacje — opcjonalne. Czyli można napisać {{test126}} lub {{ test126         }}, ale {{ TESt126 }} — nie można. Zmienna test126 jest przykładem, w rzeczywistości taka zmienna u nas nie istnieje.

Jeśli zmienna jest złożonym obiektem i ma własne właściwości, dostęp do nich odbywa się przez kropkę. Na przykład dostęp do właściwości id zmiennej subscriber wygląda tak: {{ subscriber.id }}. To rzeczywisty przykład — w szablonach dostępna jest zmienna subscriber, i ma ona właściwość id. Pełny wykaz właściwości można zobaczyć na osobnej stronie. Do tablic można odwoływać się przez indeks, używając nawiasów kwadratowych. Jednocześnie należy być pewnym, że taki indeks istnieje. Na przykład, {{ subscriber.tags[0] }}. Jeśli subskrybent nie ma żadnego tagu, próba wyświetlenia pierwszego (o indeksie 0) tagu nic nie wyświetli (czyli zostanie wyświetlony «pusty ciąg znaków», jak mówią programiści).

Można wykonywać podstawowe operacje na danych

Obsługiwane są operacje matematyczne:

  • dodawanie {{ price + tax }}
  • mnożenie {{ count * 2 }}
  • dzielenie {{ total / 3 }}

Operator warunkowy (IF)

  • podstawowy if {% if subscriber.is_active %} Jesteś zapisany na wysyłkę {% endif %}
  • operator if z blokiem else {% if subscriber.is_active %} Jesteś zapisany na wysyłkę {% else %} Jesteś wypisany z wysyłki {% endif %}
  • Łańcuch sprawdzeń {% if subscriber.gender == 'male' %} Jesteś mężczyzną {% elseif subscriber.gender == 'female' %} Jesteś kobietą {% elseif subscriber.gender == '' %} Twoja płeć nie jest podana {% endif %}

Operator if obowiązkowo ma tag otwierający  {% if condition %} i tag zamykający {% endif %}. Wewnątrz można umieścić dowolną liczbę sekcji  {% elseif condition %}. Opcjonalnie można też dodać sekcję {% else %}, która zadziała bez dodatkowych warunków, jeśli wykonanie do niej dotrze. Czyli jeśli warunki zadziałania (condition) wszystkich poprzednich części operatora if nie zostały spełnione.
 

Pętle (FOR)

Pętle są potrzebne do wyświetlania list. Wyobraźmy sobie, że mamy listę przechowywaną w zmiennej items. Oto jak można ją przejść:

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

Wartość zmiennej item będzie różna w każdej iteracji pętli. Wewnątrz pętli dostępne są także niektóre inne zmienne dotyczące bieżącej iteracji:

  • loop.index — numer iteracji, zaczyna się od 1
  • loop.first — czy to pierwsza iteracja? (true/false)
  • loop.last — czy to ostatnia iteracja? (true/false)

Pętlę można połączyć ze sprawdzeniem obecności danych:

{% for item in items %}
  {{ item }}
{% else %}
  Tablica items jest pusta
{% endfor %}