Шаблоны писем

Для удобства управления внешним видом ваших транзакционных писем рекомендуем использовать шаблоны писем. При отправке письма через api вы просто укажите наименование шаблона, получтаеля и если необходимо - набор переменных.


В шаблонах, layout, заголовке и прехедере можно использовать переменные и другие возможности шаблонизатора Twig.

Важно! В 99% случаев, все транзакционные письма для одного проекта имеют одинаковый layout (общий шаблон, включающий header и footer). В нашей системе вы можете редактировать layout и он соотвествено будет изменен для всех писем использующих этот layout.
Layout

Создайте новый layout по ссылке.
Укажите название, выберите e-mail из списка уже созданных вами отправителей (если еще не создавали отправтеля - создайте его) и укажите имя отправителя. Имя и email указанные при создании layout будут использованы в отправляемых письмах связанных с этим layout.

После создания layout вы будете отправлены на страницу редактирования кода, на которой необходимо разместить код html вашего шаблона:

Пример простого layout. Вместо контента письма, уникального для каждого из ваших типовых писем указываем {{content}} - эта переменная будет заменена на содержимое вашего шаблона письма.

                        <html>
        <body>
            <h1>Название вашей компании</h1>
            {{content}}
            <p><small>С уважением, ваша любимая компания</small></p>
        </body>
    </html>
                    
Шаблон

Шаблон - это html код, который будет размещен в переменной {{content}} layout указанного в настройках вашего шаблона.

После создания шаблона вы будете отправлены на страницу редактирования html кода письма.

Тестирование отображения письма

В режиме редактирования шаблона транзакционного письма в верхней плашке отображается кнопка «Отправить тест», при нажатии на которую подписчикам, принадлежащим группе тестирования будет отправлен e-mail с текущим шаблоном транзакционного письма.

Переменные для вставки в письмо

Вы можете обращаться к переменным, которые вы передали в шаблон при отпарвке сообщения.
Например, вместо {{nameCompany}}, в шаблоне при отправке будет отображено содержимое перемнной nameCompany.

                        
    Название вашей компании: {{nameCompany}}
                    
Дополнительные возможности
Оператор условия if

Условный оператор if позволяет проверять условия.
Например, в следующем коде проверяется переменная superuser и если она равна 1/true - то в шаблон выводится соответсвующий блок.

                        {% if superuser == true %}
    <p>Приветствуем тебя, суперпользователь. Этот блок только для тебя ;)</p>
{% endif %}
                    

Оператор if позволяет использовать конструкцию elseif и else, например:

                        {% if user == 'Mark' %}
    <p>Приветствуем тебя, Mark. Этот блок только для тебя ;)</p>
{% elseif user == 'Nastya' %}
    <p>Настя, привет :)</p>
{% else %}
    <p>Привет неизвестный пользователь.</p>
{% endif %}
                    
Обращение к подписчику по имени

Вы можете использовать сокращенную конструкцию для проверки заполененна ли переменная.
Например, в следующем коде проверяется переменная userName и если она заполнена - то она будет выведена в шаблон, иначе на экран выведется фраза - Уважаемый подписчик.

                        {{ userName ?? 'Уважаемый подписчик' }}
                    
Циклы

Цикл for осуществляет перебор последовательности. Например, выведем список продуктов products:

                        <h1>Рекомендуемые товары</h1>
<ul>
    {% for product in products %}
        <li><img src="{{ product.image }}">{{ product.title }}</li>
    {% endfor %}
</ul>
                    
Переменные цикла
Переменная Значение
loop.index Текущая итерация цикла (начиная от 1)
loop.index0 Текущая итерация цикла (начиная от 0)
loop.revindex Количество интераций с конца цикла (начиная от 1)
loop.revindex0 Количество интераций с конца цикла (начиная от 0)
loop.first выставляется в True если текущая итерация является первой
loop.last выставляется в True если текущая итерация является последней
loop.length Количество элементов в последовательности
loop.parent Родительский контекст
                        
    {% for product in products %}
         {{loop.index}}  - {{ product.title }} <br>
    {% endfor %}