Динамический контент в письмах. Velocity.

Динамический контент в письмах. Velocity.

Динамический контент в сообщениях используется для подстановки нужных данных или настроек для отправки пользователю. Например, товары по оформленному заказу, имя клиента или его персональный промокод. С введением в эту тему и более простыми методами можно ознакомиться в этой статье.

В системе eSputnik возможность динамического контента реализована с помощью библиотеки Apache Velocity. На данной странице рассмотрим основные возможности языка Velocity.

Вывод одного параметра

Все внешние данные, которые поступают в сообщения, попадают в объект data, поэтому для вывода нужного параметра прописываем так:

Вывод элементов из массива по индексам

Если мы хотим вывести элемент массива по индексу, то указываем название массива и индекс элемента:

$!data.get( ' имя массива ' ).get(0) - если в массиве указаны только значения, где 0 - индекс элемента.

$!data.get( ' имя массива ' ).get(0).get( ' имя параметра ' ) - если в массиве содержатся объекты с параметрами.

Такой способ подходит если размер массива заранее известен. Если указать индекс элемента, которого нет в массиве, то при отправке сообщения будет ошибка.

Получить размер массива Цикл для вывода всех элементов из массива

Для вывода всех элементов массива используется цикл #foreach.

Где $item - переменная, которой будет присвоен текущий элемент массива и к которой можно обращаться внутри цикла. В данном случае будет выведен весь список элементов в массиве поочередно, $velocityCount - по умолчанию имя счетчика цикла и его начальное значение начинается с 1.

Если вы хотите остановить цикл #foreach , вы можете использовать директиву #break , чтобы остановить цикл по нужному условию:

Более подробные примеры использования можете просмотреть на примере передачи заказов или брошенных корзин.

Присваивание

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

Сравнение

Операторы сравнения и логические операторы:

Операторы сравнения Velocity

Соответствующие операции сравнения

≥ (больше или равно)

≤ (меньше или равно)

Также доступны операторы для сравнения строк с учетом и без учета регистра.

Условие

Условия нам могут пригодиться по нескольким причинам:

если нужно выводить только определенную информацию (например, только одну категорию товаров);

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

Если условие не выполнено, то можно вывести альтернативный вариант:

Также можно проверить несколько условий:

Можно объединить несколько условий с помощью логических операторов and и or:

Можно инвертировать условие:

Арифметические операции

Сложение: $mathTool.add($v1, $v2)

Вычитание: $mathTool.sub($v1, $v2)

Умножение: $mathTool.mul($v1, $v2)

Деление: $mathTool.div($v1, $v2)

Форматирование чисел

$numberTool.integer($v1) - выведет целое число без округления.

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

Вывод даты в сообщение

Вывести текущую дату можно с помощью функции:

Вывести Unix TimeStamp (текущая дата в миллисекундах):

Можно задать формат вывода даты и/или времени, вторым аргументом можно задать часовой пояс по Гринвичу (GMT):

Если дата передается в формате Unix TimeStamp (например, 1495479520000), то ее можно преобразовать в читабельный формат с помощью функции:

либо с указанием формата:

Операции с датами

Прибавить к дате необходимое число единиц (год, месяц, день, час, минуты). Если из события или дополнительного поля получить дату вида: "date":"01/01/2020 12:00", результат операции будет следующим:

Если в качестве второго аргумента будет отрицательное значение, то будет возвращен результат вычитания.

По умолчанию, ожидается дата в одном из перечисленных форматов.

Если формат отличается, то третьим аргументом можно задать свой формат, например, если передаваемая вами дата в формате " customDate ": "12:00 2020-30-04", тогда выражение примет вид:

Схожим образом, за счет указания четвертого аргумента, можно форматировать дату, например, если дата в формате: "dateTime":"2020-05-01T00:00":

Вычисление разности двух дат в (минутах, днях, месяцах и годах) "firstDate":"01/01/2019", "secondDate":"05/05/2020":

Для нахождения разности обе даты должны быть в одном формате, если ваш формат отличается от ожидаемых по умолчанию, четвертым аргументом можно задать пользовательский формат, например, для двух дат: "customDate1":"17:15 05/05/2020", "customDate2":"10:05 01/01/2019":

Проверка на не пустое значение

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

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

Как проверить дополнительные поля контакта описано в данной инструкции.

Работа со строками

Узнать длину строки:

Получить часть строки:

Заменить часть строки другим значением:

Именить регистр строки:

Это, в принципе, вся краткая необходимая информация, которая может пригодиться при настройке динамического контента в письме. Рассмотреть более подробно документацию по Apache Velocity можно по ссылкам:

📎📎📎📎📎📎📎📎📎📎