Полезное

Поддержка циклов вёрстки

Условия if и for, фильтры и другие возможности шаблонизатора Jinja

Зачем нужны циклы и условия в вёрстке писем

При интеграции по SMTP часто возникает задача передать в письме не просто одну переменную (например, имя пользователя), а динамический контент. Это может быть список товаров в корзине, адреса ближайших пунктов выдачи или доступные размеры одежды.

Чтобы не формировать весь HTML-код на стороне отправителя, в SaM oTPravil реализована поддержка мощного шаблонизатора.

Шаблонизатор Jinja

Мы используем шаблонизатор Jinja (аналогично тому, как это реализовано в Mailganer). Это позволяет использовать логические конструкции прямо в коде письма.

Основные возможности

Циклы (for): позволяют итерироваться по массивам данных. Например, если вам нужно вывести список всех позиций в заказе.

Условия (if): позволяют отображать или скрывать блоки контента в зависимости от переданных данных.

Действия и фильтры: поддерживаются стандартные конструкции через вертикальную черту (|), например, приведение к числу (|int) или суммирование (|sum).

Пример реализации

Цикл в вёрстке. В HTML-коде письма конструкция будет выглядеть так:
<ul>
{% for item in items %}
  <li>{{ item.name }} — {{ item.price }} руб.</li>
{% endfor %}
</ul>
Передача данных в запросе. В самом запросе (JSON) вы передаете массив объектов, который шаблонизатор подставит в цикл:
{
  "variables": {
    "items": [
      {"name": "Товар 1", "price": "100"},
      {"name": "Товар 2", "price": "200"}
    ]
  }
}
Использование Jinja в связке с SaM oTPravil дает разработчикам гибкость: вы передаете «сырые» данные, а сервис сам отрисовывает финальный HTML-вид письма. Это упрощает логику на стороне вашего приложения и позволяет дизайнерам править вёрстку без участия бэкенд-разработчиков.

Те, кто уже знаком с Jinja, смогут использовать весь потенциал шаблонизатора (фильтры, форматирование и сложные условия) «из коробки».
Напишите в поддержку, если нужна помощь.