Последние авторы
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 |##~{~{client.properties.eorder_cnt}}##|Количество заказов клиента
211 |##~{~{client.properties.eorder_sum}}##|Общая сумма всех заказов клиента
212 |##~{~{client.eorders.first.date}}##|Дата первого заказа клиента
213 |##~{~{client.eorders.last.date}}##|Дата последнего заказа клиента
214 |##~{~{client.eorders.first.number}}##|Номер первого заказа клиента
215 |##~{~{client.eorders.last.number}}##|Номер последнего заказа клиента
216 |##~{~{client.eorders.first.<код поля>}}##|Значение атрибута в первом заказе клиента
217 |##~{~{client.eorders.last.<код поля>}}##|Значение атрибута в последнем заказе клиента
218 |##~{~{client.eorders.first.items}}##|Содержимое первого заказа
219 |##~{~{client.eorders.last.items}}##|Содержимое последнего заказа
220
221 === Пользовательские переменные ===
222
223 Доступ к пользовательским полям **Клиент/Чек/Строка чека/Категория продукта** осуществляется по их коду с помощью конструкции вида ##~{~{client.properties.<код_поля>}}##. Например:
224
225 (% class="box" %)
226 (((
227 ##~{~{client.properties.eye_color}}##
228 )))
229
230 Узнать код поля можно в разделе **Настройки >** [[Поля>>doc:Main.Using.Smart_Communications.Settings_SC.Data_field.WebHome]] во вкладках **Клиенты/Транзакции/Строки транзакций/Категории**.** **Например, код атрибута чека "Статус оплаты" — "payment_status_name".
231
232 {{lightbox image="Code_example.png"/}}
233
234 Для формирования переменной необходимо использовать формат:
235
236 * ##~{~{client.properties.<код поля>}}## — значение атрибута в **профиле** клиента;
237 * ##~{~{client.orders.first.<код поля>}}## — значение атрибута в **первом чеке** клиента;
238 * ##~{~{client.orders.last.<код поля>}}## — значение атрибута в **последнем чеке** клиента.
239
240 Для вывода значений атрибутов продуктов в [[брошенной корзине>>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"]](%%).
241
242 === Значение по умолчанию ===
243
244 Для атрибутов с типом **строка** можно установить значение по умолчанию. Это значение будет выведено в тексте сообщения, если атрибут не заполнен. Например, в сообщении можно обратиться к клиенту по имени, а если имя неизвестно — использовать значение по умолчанию:
245
246 (% class="box" %)
247 (((
248 ##~{~{client.properties.full_name|default ('Уважаемый клиент')}##
249 )))
250
251 == Макросы ==
252
253 Макросы — это небольшие команды, которые позволяют выполнять заскриптованные действия в Системе. Например, макрос ##~{~{client.promocode('группа промокода')}}## находит и возвращает промокод из группы.
254
255 === Системные макросы ===
256
257 В Smart Communications доступны макросы:
258
259 (% class="table-bordered" %)
260 |=(((
261 Макрос
262 )))|=(((
263 Назначение
264 )))
265 |(((
266 ##~{~{"now"|date('формат')}}##
267 )))|(((
268 Текущая дата
269 )))
270 |(((
271 ##~{~{client.promocode('группа промокода')}}##
272 )))|(((
273 Выдать промокод клиенту из группы промокодов
274 )))
275 |(((
276 ##~{~{client.last_promocode('группа промокода')}}##
277 )))|(((
278 Последний выданный клиенту промокод из группы
279 )))
280 |(((
281 ##~{~{client.last_campaign_promocode('группа промокода')}}##
282 )))|(((
283 Последний промокод из группы, выданный клиенту в рамках этой кампании
284 )))
285 |(((
286 ##~{~{client.template_constant('наименование')}}##
287 )))|(((
288 Константа региона
289 )))
290 |(((
291 ##~{~{client.poll('POLL-идентификатор_опроса')}}##
292 )))|(((
293 Ссылка на опрос
294 )))
295 |(((
296 ##~{~{client.loyaltyCard.lastActive.number}}##
297 )))|(((
298 Информация по активной карте лояльности клиента
299 )))
300
301 === Формат дат ===
302
303 Поля с типом **дата** можно выводить в разном формате. Для обозначения формата можно использовать любые комбинации следующих значений:
304
305 * Год:
306 ** y — 2 цифры (например, 97, 20);
307 ** Y — 4 цифры (например, 1997, 2020);
308 * m — месяц (в формате от 01 до 12);
309 * d — день (в формате от 01 до 31);
310 * h — час;
311 * i — минута;
312 * s — секунда.
313
314 **Пример 1. Вывод даты в сообщении**
315
316 При заданном формате 'Y-m-d' дата будет выведена в виде '2020-10-20'. При формате 'd.m.Y h:i' — в виде '20.10.2020 11:56'.
317
318 Пример использования макроса **Благодарность клиенту за последний заказ**:
319
320 (% class="box" %)
321 (((
322 ##Спасибо за заказ от ~{~{client.orders.last.date|date('d.m.Y')}}!##
323 )))
324
325 Клиент получит сообщение со строкой вида:
326
327 (% class="box" %)
328 (((
329 Спасибо за заказ от 29.06.2020!
330 )))
331
332 **Пример 2. Вывод даты на несколько дней позже текущей**
333
334 Чтобы вывести в сообщение дату, которая на несколько дней позже текущей, используйте такой макрос:
335
336 (% class="box" %)
337 (((
338 ##~{~{"now"|date_modify('+1 day')|date('Y-m-d')}}##
339 )))
340
341 В сообщении для клиента будет выведена завтрашняя дата.
342
343 **Пример 3. Вывод даты —** **через месяц после даты регистрации клиента**
344
345 Вывод даты +1 месяц от даты регистрации клиента.
346
347 (% class="box" %)
348 (((
349 ##~{~{client.properties.register_date|date_modify('+1 month')|date('Y-m-d')}}##
350 )))
351
352 == Вставка переменной или макроса в сообщение ==
353
354 В редакторах для всех видов сообщений есть кнопка с изображением флажка, при нажатии на которую раскрывается список доступных системных переменных и макросов:
355
356 |(% style="border-color:white; text-align:center" %){{lightbox image="Editor.png"/}}
357
358 Для вставки пользовательской переменной необходимо напечатать ее вручную.
359
360 == Предварительный просмотр ==
361
362 |(% style="border-color:white; width:1115px" %)(((
363 Чтобы посмотреть, как будет выглядеть сообщение с переменными и макросами, замененными на их значение, используйте кнопку **Предпросмотр сообщения**.
364 )))|(% style="border-color:white; width:324px" %){{lightbox image="Preview.png"/}}
365 |(% style="border-color:white; width:1115px" %)(((
366 Можно увидеть предпросмотр письма для конкретного клиента. Для этого в поле **Клиент** необходимо ввести Фамилию/Имя/Номер телефона/email/идентификатор клиента (local_id). Чтобы результаты поиска были однозначны, рекомендуется искать по номеру телефона/email/локальному идентификатору клиента.
367
368 (% class="box infomessage" %)
369 (((
370 Поиск в поле **Клиент **— регистрозависимый. Имя и фамилию клиента необходимо вводить с заглавной буквы.
371 )))
372 )))|(% style="border-color:white; width:324px" %){{lightbox image="Client3.png"/}}
373
374 == Управляющие конструкции ==
375
376 С помощью управляющих конструкций можно создавать более сложные шаблоны на основе переменных и макросов. Управляющие конструкции включают в себя for-циклы, условия (if/elseif/else) и фильтры. Управляющие конструкции выводятся внутри блоков {% ... %}.
377
378 === Переменные ===
379
380 Чтобы несколько раз использовать в сообщении одно и то же выражение, можно ввести переменную. Например, введем переменную ##webcart## для массива элементов в корзине:
381
382 (% class="box" %)
383 (((
384 ##{% set webcart = client.containers.webcart.items %}##
385 )))
386
387 === Циклы ===
388
389 В следующих случаях необходимо использовать циклы:
390
391 * Вывод атрибутов продуктов в первом/последнем чеке клиента;
392 * Вывод атрибутов продуктов в корзине;
393 * Вывод атрибутов категории продукта;
394 * Вывод информации по всем активным картам клиента, если их больше одной.
395
396 Например, можно вывести названия всех продуктов в последнем чеке клиента:
397
398 (% class="box" %)
399 (((
400 ##{% for item in client.orders.last.items%}
401 ~{~{item.name}}
402 {% endfor %}##
403 )))
404
405 Вывести название и цвет для всех продуктов из корзины:
406
407 (% class="box" %)
408 ##{% set webcart = client.containers.webcart.items %}
409 {% for item in webcart %}
410 ~{~{item.name}}
411 ~{~{item.color}}
412 {% endfor %}##
413
414 Вывести название категории для всех продуктов в последнем заказе:
415
416 (% class="box" %)
417 (((
418 ##{% for item in client.orders.last.items%}
419 ~{~{item.category.name}}
420 {% endfor %}##
421 )))
422
423 Вывести информацию по всем активным картам клиента:
424
425 (% class="box" %)
426 (((
427 ##{% for card in client.loyaltyCard.items %}
428 ~{~{card.number}}
429 {% endfor %}##
430 )))
431
432 === Условия ===
433
434 Можно вывести в сообщении только те данные, для которых выполняется заданное условие. Например, можно выдать [[промокод>>doc:Main.Using.Smart_Communications.Promo_codes.WebHome]] только клиентам из Екатеринбурга:
435
436 (% class="box" %)
437 (((
438 ##{% if client.properties.city == 'Екатеринбург' %}
439 ~{~{client.promocode('группа промокода')}}
440 {% endif %}##
441 )))
442
443 Вот несколько вариантов условий:
444
445 * {% If client.properties.city == 'Екатеринбург' %} — если клиент из Екатеринбурга;
446 * {% If client.properties.city %} — если у клиента указан город;
447 * {% If not client.properties.city %} — если у клиента не указан город;
448 * {% If client.properties.city == 'Екатеринбург' OR client.properties.city == 'Пермь' %} — если клиент из Екатеринбурга или из Перми;
449 * {% If client.properties.city == 'Екатеринбург' AND client.properties.first_name == 'Мария' %} — если клиент из Екатеринбурга и его зовут Мария.
450
451 === Фильтры ===
452
453 Для массивов доступны фильтры:
454
455 * sortArray — позволяет отсортировать массив данных по значению атрибутов:
456 ** sortArray('date', true) — сортировка по дате по убыванию;
457 ** sortArray('date', false) — сортировка по дате по возрастанию (сортировать элементы можно не только по дате, но и по другим атрибутам);
458 * get — выводит заданное количество элементов:
459 ** get(10) — вывести первые 10 элементов массива;
460 * date_diff('date') — выводит количество дней между двумя датами. Например, можно вывести, сколько дней прошло с **2020-11-11** до текущей даты:
461
462 (% class="box" %)
463 (((
464 ##~{~{"now"|date('Y-m-d')|date_diff('2020-11-11')}}##
465 )))
466
467 **Вывод информации из корзины**
468
469 Пример использования фильтров: вывести название, изображение и цену для 10 продуктов из корзины, которые были добавлены первыми.
470
471 (% class="box" %)
472 (((
473 ##{% set webcart = client.containers.webcart.items|sortArray('date', false)|get(10) %}
474 {% for item in webcart %}
475 ~{~{item.name}}
476 ~{~{item.image_url}}
477 ~{~{item.price}}
478 {% endfor %}##
479 )))
480
481 Чтобы название продукта было ссылкой, используйте тег <a> с атрибутом href:
482
483 (% class="box" %)
484 (((
485 ##<a href ="~{~{item.product_url}}">~{~{item.name}}</a>##
486 )))

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