Последние авторы
1 (% class="lead" %)
2 Шаблонизатор позволяет кастомизировать текст сообщений (email, SMS, push) в [[массовых рассылках>>doc:Main.Using.Smart_Communications.Mass_mailings.WebHome]] и [[кампаниях>>doc:Main.Using.Smart_Communications.Campaign_list.WebHome]]. Каждый клиент увидит в сообщении информацию, которая относится именно к нему.
3
4 **Содержание:**
5
6 {{toc depth="4" start="2"/}}
7
8 == Персонализация ==
9
10 Технология персонализации позволяет адаптировать рассылки под каждого клиента. [[Loymax Smart Communications>>doc:Main.Using.Smart_Communications.WebHome]] адаптирует текст сообщения и строит актуальное для клиента предложение, при необходимости выбирая подходящий момент отправки сообщения.
11 **Пример:**
12 В рамках одной и той же рассылки по рекомендуемым товарам:
13
14 * Один клиент получит сообщение (на основе истории покупок) с предложением купить сменные лезвия для бритвы и с блоком о том, что в торговых точках его города действует акция "3 по цене 2".
15 * Другой клиент получит сообщение (на основе истории покупок) с предложением купить зарядное устройство и с промо-блоком о том, что в его городе открылся новый пункт выдачи заказов.
16
17 В Loymax Smart Communications есть инструменты для персонализации:
18
19 * Конструкции шаблонизатора;
20 * Товарные рекомендации.
21
22 == Шаблонизатор ==
23
24 Шаблонизатор включает в себя:
25
26 * [[Переменные>>doc:||anchor="H41F43544043543C43543D43D44B435432A0SmartCommunications"]] — данные о клиенте, его чеках и продуктах в чеке. Например, с помощью переменной можно вывести в текст сообщения имя клиента;
27 * [[Макросы>>doc:||anchor="H41C43043A44043E44144B"]] — функции, позволяющие вывести информацию о промокодах, опросах и т. д.;
28 * [[Управляющие конструкции>>doc:||anchor="H42343F44043043243B44F44E44943843543A43E43D44144244044343A446438438"]] — циклы, условия, фильтры.
29
30 Пример использования переменной в тексте сообщения:
31
32 (% class="box" %)
33 (((
34 ##Добрый день, ~{~{client.properties.full_name}}.##
35 )))
36
37 При отправке сообщения переменная будет заменена на значение, например:
38
39 (% class="box" %)
40 (((
41 Добрый день, Иванов Иван Иванович.
42 )))
43
44 == Переменные в Smart Communications ==
45
46 Переменные позволяют подставлять в текст сообщения (а для писем — и в тему письма) данные:
47
48 * Из [[профиля клиента>>doc:Main.Using.Smart_Communications.Customers.All_clients.WebHome||anchor="Profile"]]:
49 ** Атрибуты и метрики клиента;
50 ** Ссылки для [[управления подпиской>>doc:Main.Using.Smart_Communications.Mass_mailings.Mailing_Loyalty_SC.WebHome]];
51 ** Атрибуты и содержимое из последнего чека;
52 ** Даты;
53 ** И любые другие атрибуты;
54 * О чеках клиента;
55 * О продуктах в чеке;
56 * О категории продукта.
57
58 Переменные бывают:
59
60 * [[Системные>>doc:||anchor="H42143844144243543C43D44B43543F43544043543C43543D43D44B435"]] — служат для доступа к системным полям;
61 * [[Пользовательские>>doc:||anchor="H41F43E43B44C43743E43243044243543B44C44143A43843543F43544043543C43543D43D44B435"]] — для доступа к пользовательским полям. Подробнее о полях можно прочитать [[здесь>>doc:Main.Using.Smart_Communications.Settings_SC.Data_field.WebHome]].
62
63 Формат записи переменной:
64
65 (% class="box" %)
66 (((
67 ##~{~{наименование_переменной}}##
68 )))
69
70 === Системные переменные ===
71
72 В Smart Communications доступны следующие системные переменные:
73
74 (% class="table-bordered" %)
75 |=(((
76 Переменная
77 )))|=(((
78 Назначение
79 )))
80 |(((
81 ##~{~{client.properties.full_name}}##
82 )))|(((
83 Полное имя клиента
84 )))
85 |(((
86 ##~{~{client.properties.last_name}}##
87 )))|(((
88 Фамилия клиента
89 )))
90 |(((
91 ##~{~{client.properties.first_name}}##
92 )))|(((
93 Имя клиента
94 )))
95 |(((
96 ##~{~{client.properties.middle_name}}##
97 )))|(((
98 Отчество клиента
99 )))
100 |(((
101 ##~{~{client.properties.register_date}}##
102 )))|(((
103 Дата регистрации
104 )))
105 |(((
106 ##~{~{client.properties.city}}##
107 )))|(((
108 Город клиента
109 )))
110 |(((
111 ##~{~{client.properties.zip}}##
112 )))|(((
113 Индекс клиента
114 )))
115 |(((
116 ##~{~{client.properties.email}}##
117 )))|(((
118 E-mail клиента
119 )))
120 |(((
121 ##~{~{client.properties.password}}##
122 )))|(((
123 Пароль клиента
124 )))
125 |(((
126 ##~{~{client.properties.phone}}##
127 )))|(((
128 Номер телефона клиента
129 )))
130 |(((
131 ##~{~{client.properties.order_cnt}}##
132 )))|(((
133 Количество чеков клиента
134 )))
135 |(((
136 ##~{~{client.properties.order_sum}}##
137 )))|(((
138 Общая сумма всех чеков клиента
139 )))
140 |(((
141 ##~{~{client.orders.first.date}}##
142 )))|(((
143 Дата первого чека клиента
144 )))
145 |(((
146 ##~{~{client.orders.last.date}}##
147 )))|(((
148 Дата последнего чека клиента
149 )))
150 |(((
151 ##~{~{client.orders.last.number}}##
152 )))|(((
153 Номер последнего чека
154 )))
155 |(((
156 ##~{~{client.properties.rating}}##
157 )))|(((
158 Скоринг клиента
159 )))
160 |(((
161 ##~{~{client.links.profile}}##
162 )))|(((
163 Ссылка на профиль клиента на Платформе
164 )))
165 |(((
166 ##~{~{client.links.unsubscribe}}##
167 )))|(((
168 Ссылка на [[управление подписками>>doc:Main.Using.Smart_Communications.Mass_mailings.Mailing_Loyalty_SC.WebHome]]
169 )))
170 |(((
171 ##~{~{client.links.web_version}}##
172 )))|(((
173 Ссылка на веб-версию письма
174 )))
175 |(((
176 ##~{~{client.properties.bonus_active}}##
177 )))|(((
178 Количество активных бонусов
179 )))
180 |(((
181 ##~{~{client.properties.bonus_expect_activate}}##
182 )))|(((
183 Количество бонусов, которые ожидают активации
184 )))
185 |(((
186 ##~{~{client.properties.bonus_expect_deactivate}}##
187 )))|(((
188 Количество бонусов, которые ожидают деактивации
189 )))
190 |(((
191 ##~{~{client.properties.bonus_expect_deactivate_date}}##
192 )))|(((
193 Дата деактивации бонусов
194 )))
195 |(((
196 ##~{~{client.properties.bonus_expect_deactivate_next}}##
197 )))|(((
198 Количество бонусов, которые будут деактивированы в ближайшее время
199 )))
200 |(((
201 ##~{~{client.eventContext.<код_поля>}}##
202 )))|(((
203 Данные из [[контекста события>>doc:Main.Using.Smart_Communications.Events.WebHome]]
204 )))
205 |(((
206 ##~{~{client.containers.webcart.items}}##
207 )))|(((
208 Содержимое корзины
209 )))
210
211 === Пользовательские переменные ===
212
213 Доступ к пользовательским полям **Клиент/Чек/Строка чека/Категория продукта** осуществляется по их коду с помощью конструкции вида ##~{~{client.properties.<код_поля>}}##. Например:
214
215 (% class="box" %)
216 (((
217 ##~{~{client.properties.eye_color}}##
218 )))
219
220 Узнать код поля можно в разделе **Настройки >** [[Поля>>doc:Main.Using.Smart_Communications.Settings_SC.Data_field.WebHome]] во вкладках **Клиенты/Транзакции/Строки транзакций/Категории**.** **Например, код атрибута чека "Статус оплаты" — "payment_status_name".
221
222 {{lightbox image="Code_example.png"/}}
223
224 Для формирования переменной необходимо использовать формат:
225
226 * ##~{~{client.properties.<код поля>}}## — значение атрибута в **профиле** клиента;
227 * ##~{~{client.orders.first.<код поля>}}## — значение атрибута в **первом чеке** клиента;
228 * ##~{~{client.orders.last.<код поля>}}## — значение атрибута в **последнем чеке** клиента.
229
230 Для вывода значений атрибутов продуктов в [[брошенной корзине>>doc:Main.Using.Smart_Communications.Campaign_list.Abandoned_cart.WebHome]], первом и последнем чеке, категории продукта необходимо использовать [[(% class="wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink wikiinternallink" %)циклы>>doc:||anchor="H42643843A43B44B"]](%%).
231
232 === Значение по умолчанию ===
233
234 Для атрибутов с типом **строка** можно установить значение по умолчанию. Это значение будет выведено в тексте сообщения, если атрибут не заполнен. Например, в сообщении можно обратиться к клиенту по имени, а если имя неизвестно — использовать значение по умолчанию:
235
236 (% class="box" %)
237 (((
238 ##~{~{client.properties.full_name|default ('Уважаемый клиент')}##
239 )))
240
241 == Макросы ==
242
243 Макросы — это небольшие команды, которые позволяют выполнять заскриптованные действия в Системе. Например, макрос ##~{~{client.promocode('группа промокода')}}## находит и возвращает промокод из группы.
244
245 === Системные макросы ===
246
247 В Smart Communications доступны макросы:
248
249 (% class="table-bordered" %)
250 |=(((
251 Макрос
252 )))|=(((
253 Назначение
254 )))
255 |(((
256 ##~{~{"now"|date('формат')}}##
257 )))|(((
258 Текущая дата
259 )))
260 |(((
261 ##~{~{client.promocode('группа промокода')}}##
262 )))|(((
263 Выдать промокод клиенту из группы промокодов
264 )))
265 |(((
266 ##~{~{client.last_promocode('группа промокода')}}##
267 )))|(((
268 Последний выданный клиенту промокод из группы
269 )))
270 |(((
271 ##~{~{client.last_campaign_promocode('группа промокода')}}##
272 )))|(((
273 Последний промокод из группы, выданный клиенту в рамках этой кампании
274 )))
275 |(((
276 ##~{~{client.template_constant('наименование')}}##
277 )))|(((
278 Константа региона
279 )))
280 |(((
281 ##~{~{client.poll('POLL-идентификатор_опроса')}}##
282 )))|(((
283 Ссылка на опрос
284 )))
285 |(((
286 ##~{~{client.loyaltyCard.lastActive.number}}##
287 )))|(((
288 Информация по активной карте лояльности клиента
289 )))
290
291 === Формат дат ===
292
293 Поля с типом **дата** можно выводить в разном формате. Для обозначения формата можно использовать любые комбинации следующих значений:
294
295 * Год:
296 ** y — 2 цифры (например, 97, 20);
297 ** Y — 4 цифры (например, 1997, 2020);
298 * m — месяц (в формате от 01 до 12);
299 * d — день (в формате от 01 до 31);
300 * h — час;
301 * i — минута;
302 * s — секунда.
303
304 **Пример 1. Вывод даты в сообщении**
305
306 При заданном формате 'Y-m-d' дата будет выведена в виде '2020-10-20'. При формате 'd.m.Y h:i' — в виде '20.10.2020 11:56'.
307
308 Пример использования макроса **Благодарность клиенту за последний заказ**:
309
310 (% class="box" %)
311 (((
312 ##Спасибо за заказ от ~{~{client.orders.last.date|date('d.m.Y')}}!##
313 )))
314
315 Клиент получит сообщение со строкой вида:
316
317 (% class="box" %)
318 (((
319 Спасибо за заказ от 29.06.2020!
320 )))
321
322 **Пример 2. Вывод даты на несколько дней позже текущей**
323
324 Чтобы вывести в сообщение дату, которая на несколько дней позже текущей, используйте такой макрос:
325
326 (% class="box" %)
327 (((
328 ##~{~{"now"|date_modify('+1 day')|date('Y-m-d')}}##
329 )))
330
331 В сообщении для клиента будет выведена завтрашняя дата.
332
333 **Пример 3. Вывод даты —** **через месяц после даты регистрации клиента**
334
335 Вывод даты +1 месяц от даты регистрации клиента.
336
337 (% class="box" %)
338 (((
339 ##~{~{client.properties.register_date|date_modify('+1 month')|date('Y-m-d')}}##
340 )))
341
342 == Вставка переменной или макроса в сообщение ==
343
344 В редакторах для всех видов сообщений есть кнопка с изображением флажка, при нажатии на которую раскрывается список доступных системных переменных и макросов:
345
346 |(% style="border-color:white; text-align:center" %){{lightbox image="Editor.png"/}}
347
348 Для вставки пользовательской переменной необходимо напечатать ее вручную.
349
350 == Предварительный просмотр ==
351
352 |(% style="border-color:white; width:1115px" %)(((
353 Чтобы посмотреть, как будет выглядеть сообщение с переменными и макросами, замененными на их значение, используйте кнопку **Предпросмотр сообщения**.
354 )))|(% style="border-color:white; width:324px" %){{lightbox image="Preview.png"/}}
355 |(% style="border-color:white; width:1115px" %)(((
356 Можно увидеть предпросмотр письма для конкретного клиента. Для этого в поле **Клиент** необходимо ввести Фамилию/Имя/Номер телефона/email/идентификатор клиента (local_id). Чтобы результаты поиска были однозначны, рекомендуется искать по номеру телефона/email/локальному идентификатору клиента.
357
358 (% class="box infomessage" %)
359 (((
360 Поиск в поле **Клиент **— регистрозависимый. Имя и фамилию клиента необходимо вводить с заглавной буквы.
361 )))
362 )))|(% style="border-color:white; width:324px" %){{lightbox image="Client3.png"/}}
363
364 == Управляющие конструкции ==
365
366 С помощью управляющих конструкций можно создавать более сложные шаблоны на основе переменных и макросов. Управляющие конструкции включают в себя for-циклы, условия (if/elseif/else) и фильтры. Управляющие конструкции выводятся внутри блоков {% ... %}.
367
368 === Переменные ===
369
370 Чтобы несколько раз использовать в сообщении одно и то же выражение, можно ввести переменную. Например, введем переменную ##webcart## для массива элементов в корзине:
371
372 (% class="box" %)
373 (((
374 ##{% set webcart = client.containers.webcart.items %}##
375 )))
376
377 === Циклы ===
378
379 В следующих случаях необходимо использовать циклы:
380
381 * Вывод атрибутов продуктов в первом/последнем чеке клиента;
382 * Вывод атрибутов продуктов в корзине;
383 * Вывод атрибутов категории продукта;
384 * Вывод информации по всем активным картам клиента, если их больше одной.
385
386 Например, можно вывести названия всех продуктов в последнем чеке клиента:
387
388 (% class="box" %)
389 (((
390 ##{% for item in client.orders.last.items%}
391 ~{~{item.name}}
392 {% endfor %}##
393 )))
394
395 Вывести название и цвет для всех продуктов из корзины:
396
397 (% class="box" %)
398 ##{% set webcart = client.containers.webcart.items %}
399 {% for item in webcart %}
400 ~{~{item.name}}
401 ~{~{item.color}}
402 {% endfor %}##
403
404 Вывести название категории для всех продуктов в последнем заказе:
405
406 (% class="box" %)
407 (((
408 ##{% for item in client.orders.last.items%}
409 ~{~{item.category.name}}
410 {% endfor %}##
411 )))
412
413 Вывести информацию по всем активным картам клиента:
414
415 (% class="box" %)
416 (((
417 ##{% for card in client.loyaltyCard.items %}
418 ~{~{card.number}}
419 {% endfor %}##
420 )))
421
422 === Условия ===
423
424 Можно вывести в сообщении только те данные, для которых выполняется заданное условие. Например, можно выдать [[промокод>>doc:Main.Using.Smart_Communications.Promo_codes.WebHome]] только клиентам из Екатеринбурга:
425
426 (% class="box" %)
427 (((
428 ##{% if client.properties.city == 'Екатеринбург' %}
429 ~{~{client.promocode('группа промокода')}}
430 {% endif %}##
431 )))
432
433 Вот несколько вариантов условий:
434
435 * {% If client.properties.city == 'Екатеринбург' %} — если клиент из Екатеринбурга;
436 * {% If client.properties.city %} — если у клиента указан город;
437 * {% If not client.properties.city %} — если у клиента не указан город;
438 * {% If client.properties.city == 'Екатеринбург' OR client.properties.city == 'Пермь' %} — если клиент из Екатеринбурга или из Перми;
439 * {% If client.properties.city == 'Екатеринбург' AND client.properties.first_name == 'Мария' %} — если клиент из Екатеринбурга и его зовут Мария.
440
441 === Фильтры ===
442
443 Для массивов доступны фильтры:
444
445 * sortArray — позволяет отсортировать массив данных по значению атрибутов:
446 ** sortArray('date', true) — сортировка по дате по убыванию;
447 ** sortArray('date', false) — сортировка по дате по возрастанию (сортировать элементы можно не только по дате, но и по другим атрибутам);
448 * get — выводит заданное количество элементов:
449 ** get(10) — вывести первые 10 элементов массива;
450 * date_diff('date') — выводит количество дней между двумя датами. Например, можно вывести, сколько дней прошло с **2020-11-11** до текущей даты:
451
452 (% class="box" %)
453 (((
454 ##~{~{"now"|date('Y-m-d')|date_diff('2020-11-11')}}##
455 )))
456
457 **Вывод информации из корзины**
458
459 Пример использования фильтров: вывести название, изображение и цену для 10 продуктов из корзины, которые были добавлены первыми.
460
461 (% class="box" %)
462 (((
463 ##{% set webcart = client.containers.webcart.items|sortArray('date', false)|get(10) %}
464 {% for item in webcart %}
465 ~{~{item.name}}
466 ~{~{item.image_url}}
467 ~{~{item.price}}
468 {% endfor %}##
469 )))
470
471 Чтобы название продукта было ссылкой, используйте тег <a> с атрибутом href:
472
473 (% class="box" %)
474 (((
475 ##<a href ="~{~{item.product_url}}">~{~{item.name}}</a>##
476 )))

Новости
Обновления
Облако тегов
Словарь
Наш блог
YouTube и Rutube
Telegram