Условные выражения в PROScript
Условные выражения позволяют выводить в письме информацию в зависимости от значения данных в анкетах подписчиков. Например, вы можете отправить одно письмо с разным контентом: те получатели, у которых в анкете указан город «Москва», увидят приглашение на офлайн-мероприятие, а получатели с другими городами в анкетных данных — ссылку на онлайн-трансляцию.
IF / ELSIF / ELSE
IF
помогает задать условия, при которых какие-то элементы письма будут включаться или, наоборот, отключаться.
Например, можно поприветствовать подписчика по имени, если оно указано в анкете. Если поле с именем не заполнено, получатель не увидит приветствия.
[% IF anketa.base.firstName %] Здравствуйте, [% anketa.base.firstName %][% END %]
Чтобы получатель увидел приветствие несмотря на отсутствие имени в анкете, используйте выражение ELSE
— оно помогает задать другой сценарий поведения шаблона:
[% IF anketa.base.firstName %] Здравствуйте, [% anketa.base.firstName %][% ELSE %] Здравствуйте![% END %]
Таким образом мы говорим системе: если в поле с именем есть данные, выведи это имя в письме, в ином случае выводи «Здравствуйте!».
Выражение ELSIF
используется, чтобы задать нескольких альтернативных условий. ELSE
в этом случае срабатывает, если ни одно из условий не выполнилось. Можно объединять несколько выражений с помощью ELSIF
и/или ELSE
.
Например, система может проверить, какие контактные данные есть в анкете подписчика, и в зависимости от этого показать разный текст в письме:
[% IF anketa.custom.phone %]
Спасибо, что оставили свой номер, [% anketa.base.name %]! Мы скоро свяжемся с вами по телефону.
[% ELSIF anketa.custom.tg %]
Здравствуйте, [% anketa.base.name %]! Когда заказ будет готов, мы напишем вам в Телеграм и расскажем все подробности.
[% ELSE %]
Добрый день, [% anketa.base.name %]! Пожалуйста, оставьте свои контактные данные, чтобы мы могли с вами связаться.
[% END %]
Таким образом:
- если в анкете получателя указан телефон, он увидит информацию о том, что с ним свяжутся по указанному номеру;
- если в анкете получателя нет номера телефона, но есть контакт в Telegram, он увидит сообщение о том, что с ним свяжутся в этом канале;
- если в анкете получателя нет ни номера телефона, ни контакта в Telegram, он увидит просьбу оставить контактные данные.
Операторы сравнения
Для сравнения логики внутри условий можно использовать операторы:
==
— равно,!=
— не равно,<
,<=
,>
,>=
— меньше, меньше или равно, больше, больше или равно,
Несколько условий можно объединять при помощи логических операторов:
&&
илиand
— условие И,||
илиor
— условие ИЛИ,!
илиnot
— отрицание.
Например:
[% IF anketa.custom.age > 18 && anketa.custom.order_total > 10000 %]
Спасибо за крупный заказ! Вам начислены бонусы.
[% END %]
Так текст благодарности за заказ увидят только те получатели, кто сделал заказ на сумму от 10 000 рублей и достиг 18 лет.
Условия и ссылки
В зависимости от условия можно выводить в письме разные ссылки:
[% IF anketa.base.city == 'Москва' %]
<a href="https://moscow.example.com">Узнать больше</a>
[% ELSE %]
<a href="https://www.example.com">Узнать больше</a>
[% END %]
Если в анкете указан город Москва, система подставит в письмо ссылку на сайт с информацией для этого города. А если в поле город что-то другое или пусто — подписчик получит общую ссылку.
Также внутри одной ссылки можно подставлять разные адреса:
<a href="[% IF anketa.base.city == 'Москва' %] moscow.example.com [% ELSE %] www.example.com [% END %]" Узнать больше ></a>
SWITCH / CASE
SWITCH
/ CASE
используется для выбора одного из многих вариантов. Это удобнее и быстрее, чем использовать несколько IF
.
В примере система проверяет, что указано в поле «Город», и в зависимости от этого выводит текст:
[% SWITCH anketa.base.city %]
[% CASE "Воронеж" %] Вы в Воронеже.
[% CASE ["Москва", "Петербург"] %] Вы или в Москве, или в Петербурге.
[% CASE DEFAULT %] К сожалению, ваш город мы не обслуживаем.
[% END %]
Вы можете комбинировать IF
и SWITCH
, если хотите, чтобы логика зависела сразу от нескольких условий.
Например, можно сначала проверить, участвует ли подписчик в бонусной программе, а после этого показать количество бонусов в валюте его счёта:
[% bonus_text = "" %]
[% IF anketa.custom.client_type == 'bonus' %]
[% SWITCH currency %]
[% CASE 'RUB' %][% bonus_text = "Вам начислен бонус: 500 рублей!" %]
[% CASE 'USD' %][% bonus_text = "You've received a $10 bonus!" %]
[% CASE 'EUR' %][% bonus_text = "Sie haben einen Bonus von 9 € erhalten!" %]
[% DEFAULT %][% bonus_text = "Бонус начислен в вашей валюте." %]
[% END %]
[% END %]