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

Что такое шаблонизатор

Шаблонизатор позволяет кастомизировать текст сообщений (e-mail, SMS, push) в массовых рассылках и кампаниях. Каждый клиент увидит в сообщении информацию, которая относится именно к нему.

Шаблонизатор включает в себя:

  • Переменные – данные о клиенте, его чеках и продуктах в чеке. Например, с помощью переменной можно вывести в текст сообщения имя клиента;

  • Макросы – функции, позволяющие вывести информацию о промокодах, опросах и т.д.;

  • Управляющие конструкции – циклы, условия, фильтры.

Пример использования переменной в тексте сообщения:

Добрый день, {{client.properties.full_name}}.

При отправке сообщения переменная будет заменена на значение, например:

Добрый день, Иванов Иван Иванович.

Переменные в Платформе

Переменные позволяют подставлять в текст сообщения (а для писем и в тему письма) данные:

  • Из профиля клиента:

    • Атрибуты и метрики клиента;

    • Ссылки для управления подпиской;

    • Атрибуты и содержимое из последнего чека;

    • Даты;

    • И любые другие атрибуты;

  • О чеках клиента;

  • О продуктах в чеке;

  • О категории продукта.

Переменные бывают:

Подробнее о полях можно прочитать здесь.

Формат записи переменной: {{наименование_переменной}}.

Системные переменные

В Платформе доступны системные переменные:

Переменная

Назначение

{{client.properties.full_name}}

Полное имя клиента

{{client.properties.last_name}}

Фамилия клиента

{{client.properties.first_name}}

Имя клиента

{{client.properties.middle_name}}

Отчество клиента

{{client.properties.register_date}}

Дата регистрации

{{client.properties.city}}

Город клиента

{{client.properties.zip}}

Индекс клиента

{{client.properties.email}}

E-mail клиента

{{client.properties.password}}

Пароль клиента

{{client.properties.phone}}

Номер телефона клиента

{{client.properties.order_cnt}}

Количество чеков клиента

{{client.properties.order_sum}}

Общая сумма всех чеков клиента

{{client.orders.first.date}}

Дата первого чека клиента

{{client.orders.last.date}}

Дата последнего чека клиента

{{client.orders.last.number}}

Номер последнего чека

{{client.properties.rating}}

Скоринг клиента

{{client.links.profile}}

Ссылка на профиль клиента на Платформе

{{client.links.unsubscribe}}

Ссылка на управление подписками

{{client.links.web_version}}

Ссылка на веб-версию письма

{{client.properties.bonus_active}}

Количество активных бонусов

{{client.properties.bonus_expect_activate}}

Количество бонусов, которые ожидают активации

{{client.properties.bonus_expect_deactivate}}

Количество бонусов, которые ожидают деактивации

{{client.properties.bonus_expect_deactivate_date}}

Дата деактивации бонусов

{{client.properties.bonus_expect_deactivate_next}}

Количество бонусов, которые будут деактивированы в ближайшее время

{{client.context('имя_поля')}}

Данные из контекста события

{{client.containers.lost_cart.items}}

Содержимое брошенной корзины

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

Доступ к пользовательским полям Клиента/Чека/Строки чека/Категории продукта осуществляется по их коду с помощью конструкции вида {{client.properties.<код_поля>}}. Например:

{{client.properties.eye_color}}

Узнать код поля можно в разделе Настройки–Поля во вкладке Клиенты/Транзакции/Строки транзакций/Категории.

Например, код атрибута чека "Способ оплаты" – "payment_type".

Код атрибута чека Способ оплаты

Для формирования переменной надо использовать формат:

  • {{client.properties.<код поля>}} – значение атрибута в профиле клиента;

  • {{client.orders.first.<код поля>}} – значение атрибута в первом чеке клиента;

  • {{client.orders.last.<код поля>}} – значение атрибута в последнем чеке клиента.

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

Значение по умолчанию

Для атрибутов с типом строка можно установить значение по умолчанию. Это значение будет выведено в тексте сообщения, если атрибут не заполнен.

Например, в сообщении можно обратиться к клиенту по имени, а если имя неизвестно – использовать значение по умолчанию:

{{client.properties.full_name|default ('Уважаемый клиент')}

Макросы

Макросы сравнимы с функциями в языках программирования. Например, макрос {{client.promocode('группа промокода')}} находит и возвращает промокод из группы.

Системные макросы

В Платформе доступны макросы:

Макрос

Назначение

{{"now"|date('формат')}}

Текущая дата

{{client.promocode('группа промокода')}}

Выдать промокод клиенту из группы промокодов

{{client.last_promocode('группа промокода')}}

Последний выданный клиенту промокод из группы

{{client.last_campaign_promocode('группа промокода')}}

Последний промокод из группы, выданный клиенту в рамках этой кампании

{{client.template_constant('наименование')}}

Константа региона

{{client.poll('Наименование_опроса')}}

Ссылка на опрос

Формат дат

Поля с типом дата можно выводить в разном формате. Для обозначения формата можно использовать любые комбинации следующих значений:

  • Год:

    • y – 2 цифры (например, 97, 20);

    • Y – 4 цифры (например, 1997, 2020);

  • m – месяц (в формате от 01 до 12);

  • d – день (в формате от 01 до 31);

  • h – час;

  • i – минута;

  • s – секунда.

Пример 1. Вывод даты в сообщении

Например, при заданном формате 'Y-m-d' дата будет выведена в виде '2020-10-20'. При формате 'd.m.Y h:i' – в виде '20.10.2020 11:56'.

Пример использования макроса: благодарность клиенту за последний заказ.

Спасибо за заказ от {{client.orders.last.date|date('d.m.Y')}}!

Клиент получит сообщение со строкой вида:

Спасибо за заказ от 29.06.2020!

Пример 2. Вывод даты на несколько дней позже текущей

Чтобы вывести в сообщение дату, которая на несколько дней позже текущей, используйте такой макрос:

{{"now"|date_modify('+1 day')|date('Y-m-d')}}

В сообщении будет выведена завтрашняя дата.

Пример 3. Вывод даты – через месяц после даты регистрации клиента

Пример: вывод даты +1 месяц от даты регистрации клиента.

{{client.properties.register_date|date_modify('+1 month')|date('Y-m-d')}}

Вставка переменной или макроса в сообщение

В редакторах для всех видов сообщений есть кнопка, при нажатии на которую раскрывается список доступных системных переменных и макросов:

Для вставки пользовательской переменной необходимо напечатать её вручную.

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

Чтобы посмотреть, как будет выглядеть сообщение с переменными и макросами, заменёнными на их значение, используйте кнопку Предпросмотр сообщения.

Можно увидеть предпросмотр письма для конкретного клиента. Для этого в поле Клиент надо ввести Фамилию/Имя/Номер телефона/e-mail/локальный идентификатор клиента (local_id). Чтобы результаты поиска были однозначны, рекомендуется искать по номеру телефона/e-mail/локальному идентификатору клиента.

Поиск в поле Клиент – регистрозависимый. Имя и фамилию клиента необходимо вводить с большой буквы.

Управляющие конструкции

С помощью управляющих конструкций можно создавать более сложные шаблоны на основе переменных и макросов. Управляющие конструкции включают в себя for-циклы, условия (if/elseif/else) и фильтры. Управляющие конструкции выводятся внутри блоков {% ... %}.

Переменные

Чтобы несколько раз использовать в сообщении одно и то же выражение, можно ввести переменную.

Например, введём переменную lost_cart для массива элементов в брошенной корзине:

{% set lost_cart = client.containers.lost_cart.items %}

Циклы

В следующих случаях необходимо использовать циклы:

  • Вывод атрибутов продуктов в первом/последнем чеке клиента;

  • Вывод атрибутов продуктов в брошенной корзине;

  • Вывод атрибутов категории продукта.

Например, можно вывести названия всех продуктов в последнем чеке клиента:

{% for item in client.orders.last.items%}
{{item.name}}
{% endfor %}

Вывести название и цвет для всех продуктов из брошенной корзины:

{% set lost_cart = client.containers.lost_cart.items %}
{% for item in lost_cart %}
{{item.name}}
{{item.color}}
{% endfor %}

Вывести название категории для всех продуктов в последнем заказе:

{% for item in client.orders.last.items%}
{{item.category.name}}
{% endfor %}

Условия

Можно вывести в сообщении только те данные, для которых выполняется заданное условие.

Например, можно выдать промокод только клиентам из Екатеринбурга:

{% if client.properties.city == 'Екатеринбург' %}
{{client.promocode('группа промокода')}}
{% endif %}

Вот несколько вариантов условий:

  • {% If client.properties.city == 'Екатеринбург' %} – если клиент из Екатеринбурга;

  • {% If client.properties.city %} – если у клиента указан город;

  • {% If not client.properties.city %} – если у клиента не указан город;

  • {% If client.properties.city == 'Екатеринбург' OR client.properties.city == 'Пермь' %} – если клиент из Екатеринбурга или из Перми;

  • {% If client.properties.city == 'Екатеринбург' AND client.properties.first_name == 'Мария' %} – если клиент из Екатеринбурга и его зовут Мария.

Фильтры

Для массивов доступны фильтры:

  • sortArray – позволяет отсортировать массив данных по значению атрибутов:

    • sortArray('date', true) – сортировка по дате по убыванию;

    • sortArray('date', false) – сортировка по дате по возрастанию (сортировать элементы можно не только по дате, но и по другим атрибутам);

  • get – выводит заданное количество элементов:

    • get(10) – вывести первые 10 элементов массива;

  • date_diff('date') – выводит количество дней между двумя датами. Например, можно вывести, сколько дней прошло с 2020-11-11 до текущей даты:

{{"now"|date('Y-m-d')|date_diff('2020-11-11')}}

Вывод информации из брошенной корзины

Пример использования фильтров: вывести название, изображение и цену для 10 продуктов из брошенной корзины, которые были добавлены в корзину первыми.

{% set lost_cart = client.containers.lost_cart.items|sortArray('date', false)|get(10) %}
{% for item in lost_cart %}
{{item.name}}
{{item.image_url}}
{{item.price}}
{% endfor %}

Чтобы название продукта было ссылкой, используйте тег <a> с атрибутом href:

<a href ="{{item.product_url}}">{{item.name}}</a>