Синтаксис и возможности шаблонов

Основы работы в шаблонах

Шаблоны поддерживают определённые переменные и особый синтаксис, который даёт больше возможностей, чем статичные шаблоны. То есть определённый текст преобразуется по определённым правилам. Если вы работали с шаблонизатором twig, то вы уже знаете почти всё, что нужно. На этой странице описан основной доступный функционал. Желающие узнать всё более детально могут ознакомиться с официальной документацией к twig. Однако не все возможности twig доступны в наших шаблонах, поэтому не забывайте проверить результат с помощью функции предварительного просмотра, а также делать тестовые рассылки на свои аккаунты перед запуском кампании на большое число реальных пользователей.

Доступные переменные в шаблонах:

  1. subscriber - это объект, содержащий информацию о текущем подписчике. Посмотреть полную структуру этой переменной можно на отдельной странице.
  2. campaign - это объект, содержащий информацию о текущей кампании рассылки. Посмотреть полную структуру этой переменной можно на отдельной странице. Эта переменная не будет содержать данных на предварительном просмотре, так как он работает вне контекста какой-либо кампании рассылки
  3. unsubscribe_url - Это http ссылка на нашу страницу, где подписчик может отписаться от текущей кампании рассылки. Если у вас есть свои собственные настройки подписки на вашем сайте, вы можете использовать ссылку на отписку, ведущую на ваш сайт. Если подписчик не найдёт простую и удобную возможность отписаться от нежелательной рассылки, то он, вероятно, отправит ваше письмо в спам, поэтому рекомендуем в каждом письме предоставлять возможность отписки. Эта переменная не будет доступна на предварительном просмотре.

В шаблонах можно использовать переменные

Для использования переменной её нужно заключить в двойные фигурные кавычки. Например, для вывода переменной test126 нужно написать {{ test126 }}. Соблюдать регистр (большие и маленькие буквы) обязательно, а пробелы - опционально. То есть можно написать {{test126}} или {{ test126         }}, а вот {{ TESt126 }} нельзя. Переменная test126 это пример, у нас нет такой переменной на самом деле.

Если переменная является сложным объектом, у которой есть свои свойства, то доступ к ним осуществляется через точку. Например, доступ к свойству id переменной subscriber выглядит так: {{ subscriber.id }}. Это уже настоящий пример, в шаблонах доступна переменная subscriber и у неё есть свойство id. Полный перечень свойств можно увидеть на отдельной странице. К массивам можно обращаться по индексу, используя квадратные скобки. Но нужно быть уверенным, что индекс существует. Например, {{ subscriber.tags[0] }}. Если у подписчика нет ни одного тега, то попытка вывести первый (с индексом 0) тег ничего не выведет (то есть выведет "пустую строку", как уточняют программисты).

Можно выполнять базовые операции с данными

Поддерживаются математические операции

  • сложения {{ price + tax }}
  • умножения {{ count * 2 }}
  • деления {{ total / 3 }}

Оператор условия (IF)

  • базовый if {% if subscriber.is_active %} Вы подписаны на рассылку {% endif %}
  • оператор if с блоком else {% if subscriber.is_active %} Вы подписаны на рассылку {% else %} Вы отписаны от рассылки {% endif %}
  • Цепочка проверок {% if subscriber.gender == 'male' %} Вы мужчина {% elseif subscriber.gender == 'female' %} Вы женщина {% elseif subscriber.gender == '' %} Ваш пол не указан {% endif %}

Оператор if обязан иметь открывающий тег  {% if condition %} и закрывающий тег {% endif %}. В середине можно разместить сколько угодно секций  {% elseif condition %}. Также опционально можно разместить секцию {% else %}, которая сработает без дополнительных условий, если до неё дойдёт выполнение. То есть если условие срабатывания (condition) всех ранее описанных частей нашего оператора if не сработают.
 

Циклы (FOR)

Циклы нужны для вывода списков. Представим, что у нас есть список, который находится в переменной items. Вот как его можно перебрать:

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

Значение переменной item будет разным на каждой итерации цикла. Внутри цикла доступны некоторые другие переменные, относящиеся к текущей итерации:

  • loop.index — номер итерации, начинается с 1
  • loop.first — это первая итерация? (true/false)
  • loop.last — это последняя итерация? (true/false)

Цикл можно совместить с проверкой на наличие данных:

{% for item in items %}
  {{ item }}
{% else %}
  Массив items пустой
{% endfor %}