Полезное

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

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

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

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

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

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

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

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

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

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

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

Сейчас доступно для методов

Отправка через API
Отправка XML v1
Отправка JSON v1

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

Цикл в вёрстке. В 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, смогут использовать весь потенциал шаблонизатора (фильтры, форматирование и сложные условия) «из коробки».

Напишите в поддержку, если нужна помощь.

Мы используем куки и обрабатываем данные о посетителях сайта согласно политике. Настройки можно изменить в браузере.

OK