Исходный код вики Персонализация рассылок через шаблонизатор
Последние авторы
| author | version | line-number | content |
|---|---|---|---|
| 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 | * [[Товарные рекомендации>>doc:Main.General_information.Loymax_Loyalty.recommendation_systems.Commercial_recommendations.WebHome]]. | ||
| 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||anchor="H41A43E43D44243543A44144244143E43144B442438439"]] | ||
| 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 | ))) | ||
| 487 | |||
| 488 | == Подстановка данных из витрин == | ||
| 489 | |||
| 490 | Loymax Smart Communications позволяет подставлять в текст сообщения значения полей [[витрин>>doc:Main.Using.Smart_Communications.Settings_SC.Data_field.WebHome||anchor="H41243844244043843D44B"]]. Для подстановки данных из витрин, организованных по принципу "один к одному" используйте следующий синтаксис: | ||
| 491 | |||
| 492 | (% class="box" %) | ||
| 493 | ((( | ||
| 494 | ##~{~{client.marts.<код витрины>.<код поля>}}## | ||
| 495 | ))) | ||
| 496 | |||
| 497 | Для подстановки данных объектов, хранящихся в мультивитрине, используйте цикл: | ||
| 498 | |||
| 499 | (% class="box" %) | ||
| 500 | ((( | ||
| 501 | ##{% set items = client.multimarts.<код витрины>.items %} | ||
| 502 | {% for item in items %} | ||
| 503 | ~{~{item.<код поля 1>}} | ||
| 504 | ~{~{item.<код поля 2>}} | ||
| 505 | ~{~{item.<код поля 3>}} | ||
| 506 | {% endfor %}## | ||
| 507 | ))) | ||
| 508 | |||
| 509 | == Использование данных из контекста триггера == | ||
| 510 | |||
| 511 | Когда срабатывает [[триггер>>doc:Main.Using.Smart_Communications.Campaign_list.Triggers.WebHome]] кампании, в контекст триггера записывается информация об объекте или наборе (коллекции) объектов, вызвавших срабатывание. В зависимости от вида триггера это может быть товар, заказ, категория и т.п. Контекст всегда привязан к конкретному клиенту и может быть использован для персонализации коммуникации. | ||
| 512 | |||
| 513 | В рассылках, отправленных в рамках кампании, можно использовать значения [[полей>>doc:Main.Using.Smart_Communications.Settings_SC.Data_field.WebHome]] объекта из контекста триггера. Структура данных в контексте триггера соответствует модели данных соответствующего объекта, т.е. содержит все поля, настроенные для этого типа объекта. | ||
| 514 | |||
| 515 | Контекст любого триггера содержит объект ##client## (Клиент). Обращаясь к этому объекту, можно получить содержимое любого поля [[профиля клиента>>doc:Main.Using.Smart_Communications.Customers.All_clients.WebHome||anchor="H41F44043E44443843B44C43A43B43843543D442430"]] — как системного, так и пользовательского. Для обращения к полям профиля клиента используйте следующий синтаксис: ##~{~{trigger.client.properties.<код поля>}}## | ||
| 516 | |||
| 517 | В некоторых триггерах помимо объекта ##client## передаётся другой объект. Перечень таких триггеров см. в таблице ниже. | ||
| 518 | |||
| 519 | (% class="table-bordered" %) | ||
| 520 | |=Триггеры|=Объекты в контексте|=Комментарий | ||
| 521 | |((( | ||
| 522 | * [[Дней с чека>>doc:Main.Using.Smart_Communications.Campaign_list.Triggers.WebHome||anchor="H41443D43543944144743543A430"]] | ||
| 523 | * [[Наступление даты для чека>>doc:Main.Using.Smart_Communications.Campaign_list.Triggers.WebHome||anchor="H41D43044144244343F43B43543D43843543443044244B43443B44F44743543A430"]] | ||
| 524 | * [[Пробит чек>>doc:Main.Using.Smart_Communications.Campaign_list.Triggers.WebHome||anchor="H41F44043E43143844244743543A"]] | ||
| 525 | )))|((( | ||
| 526 | * ##client ##(Клиент) | ||
| 527 | * ##order ##(Чек) | ||
| 528 | )))|((( | ||
| 529 | (% id="cke_bm_68121S" style="display:none" %) (%%)Для обращения к полям чека используйте следующий синтаксис: ##~{~{trigger.order.<код поля чека>}}## | ||
| 530 | |||
| 531 | Для обращения ко всем строкам чека используйте цикл: | ||
| 532 | |||
| 533 | {{code}} | ||
| 534 | {% for item in trigger.order.items %} | ||
| 535 | {{item.<код поля строки чека>}} | ||
| 536 | {% endfor %} | ||
| 537 | {{/code}} | ||
| 538 | |||
| 539 | Строки чека также содержат поле ##category##, заполненное полями категории, к которой относится соответствующий продукт. Вы можете обращаться к полям категории, используя следующий синтаксис: ##~{~{item.category.<код поля категории>}}## | ||
| 540 | |||
| 541 | ))) | ||
| 542 | |((( | ||
| 543 | * [[Дней с заказа>>doc:Main.Using.Smart_Communications.Campaign_list.Triggers.WebHome||anchor="H41443D43543944143743043A430437430"]] | ||
| 544 | * [[Заказан продукт>>doc:Main.Using.Smart_Communications.Campaign_list.Triggers.WebHome||anchor="H41743043A43043743043D43F44043E43444343A442"]] | ||
| 545 | * [[Заказан продукт из категории>>doc:Main.Using.Smart_Communications.Campaign_list.Triggers.WebHome||anchor="H41743043A43043743043D43F44043E43444343A44243843743A43044243543343E440438438"]] | ||
| 546 | * [[Изменился статус заказа>>doc:Main.Using.Smart_Communications.Campaign_list.Triggers.WebHome||anchor="H41843743C43543D43843B44144F44144243044244344143743043A430437430"]] | ||
| 547 | * [[Наступление даты для заказа>>doc:Main.Using.Smart_Communications.Campaign_list.Triggers.WebHome||anchor="H41D43044144244343F43B43543D43843543443044244B43443B44F43743043A430437430"]] | ||
| 548 | * [[Сделан заказ>>doc:Main.Using.Smart_Communications.Campaign_list.Triggers.WebHome||anchor="H42143443543B43043D43743043A430437"]] | ||
| 549 | )))|((( | ||
| 550 | * ##client ##(Клиент) | ||
| 551 | * ##eorder## (Заказ) | ||
| 552 | )))|((( | ||
| 553 | (% id="cke_bm_74915S" style="display:none" %) (%%)Для обращения к полям заказа используйте следующий синтаксис ##~{~{trigger.eorder.<код поля заказа>}}## | ||
| 554 | |||
| 555 | Для обращения ко всем строкам заказа используйте цикл: | ||
| 556 | |||
| 557 | {{code}} | ||
| 558 | {% for item in trigger.eorder.items %} | ||
| 559 | {{item.<код поля строки заказа>}} | ||
| 560 | {% endfor %} | ||
| 561 | {{/code}} | ||
| 562 | |||
| 563 | Строки заказа также содержат поле ##category##, заполненное полями категории, к которой относится соответствующий продукт. Вы можете обращаться к полям категории, используя следующий синтаксис: ##~{~{item.category.<код поля категории>}}## | ||
| 564 | ))) | ||
| 565 | |[[Добавлен товар в контейнер>>doc:Main.Using.Smart_Communications.Campaign_list.Triggers.WebHome||anchor="H41443E43143043243B43543D44243E43243044043243A43E43D44243543943D435440"]]|((( | ||
| 566 | * ##client ##(Клиент) | ||
| 567 | * ##product ##(Продукт) | ||
| 568 | )))|Для обращения к полям продукта используйте следующий синтаксис: ##~{~{trigger.product.<код поля продукта>}}## | ||
| 569 | |((( | ||
| 570 | * [[Изменилась цена на просмотренный товар>>doc:Main.Using.Smart_Communications.Campaign_list.Triggers.WebHome||anchor="H41843743C43543D43843B43044144C44643543D43043D43043F44043E44143C43E44244043543D43D44B43944243E432430440"]] | ||
| 571 | * [[Изменилась цена продукта>>doc:Main.Using.Smart_Communications.Campaign_list.Triggers.WebHome||anchor="H41843743C43543D43843B43044144C44643543D43043F44043E43444343A442430"]] | ||
| 572 | )))|((( | ||
| 573 | * ##client ##(Клиент) | ||
| 574 | * ##products ##(коллекция объектов Продукт) | ||
| 575 | )))|((( | ||
| 576 | Для обращения ко всем продуктам в коллекции используйте цикл: | ||
| 577 | |||
| 578 | {{code}} | ||
| 579 | {% for product in trigger.products %} | ||
| 580 | {{product.<код поля продукта>}} | ||
| 581 | {% endfor %} | ||
| 582 | {{/code}} | ||
| 583 | ))) | ||
| 584 | |[[Брошенный просмотр категории>>doc:Main.Using.Smart_Communications.Campaign_list.Triggers.WebHome||anchor="H41144043E44843543D43D44B43943F44043E44143C43E44244043A43044243543343E440438438"]]|((( | ||
| 585 | * ##client ##(Клиент) | ||
| 586 | * ##category ##(Категория продуктов) | ||
| 587 | )))|((( | ||
| 588 | Поскольку триггер обрабатывает события за последние двое суток, за этот период может быть зарегистрировано большое количество событий **Просмотр категории **(##view_category##). В контекст триггера записывается только две категории: последняя просмотренная и самая часто просматриваемая. | ||
| 589 | |||
| 590 | Для обращения к последней просмотренной категории используйте следующий синтаксис: ##~{~{trigger.last_category.<код поля категории>}}## | ||
| 591 | |||
| 592 | Для обращения к самой часто просматриваемой категории используйте следующий синтаксис: ##~{~{trigger.frequent_category.<код поля категории>}}## | ||
| 593 | ))) | ||
| 594 | |||
| 595 | {{showhide showmessage="Пример обращения к контексту триггера ~"Сделан заказ~"" hidemessage="Скрыть пример"}} | ||
| 596 | |(% style="width:50%" %)((( | ||
| 597 | **Код:** | ||
| 598 | |||
| 599 | (% class="box" %) | ||
| 600 | ((( | ||
| 601 | ##~{~{trigger.client.properties.full_name}}##, | ||
| 602 | ##~{~{trigger.eorder.date}}## вы оформили заказ ##~{~{trigger.eorder.number}}## на сумму ##~{~{trigger.eorder.items_sum}}## с доставкой в г. ##~{~{trigger.eorder.delivery_city}}.## | ||
| 603 | |||
| 604 | Состав заказа: | ||
| 605 | |||
| 606 | ##{% for item in trigger.eorder.items %}## | ||
| 607 | Название товара: ##~{~{item.name}}## | ||
| 608 | Количество товара: ##~{~{item.cnt}}## | ||
| 609 | Цена товара: ##~{~{item.price}}## | ||
| 610 | Скидка: ##~{~{item.discount}}## | ||
| 611 | Стоимость товара: ##~{~{item.cnt}} x (~{~{item.price}} - ~{~{item.discount}})= ~{~{item.sum}}## | ||
| 612 | {% endfor %} | ||
| 613 | ))) | ||
| 614 | |||
| 615 | |||
| 616 | )))|(% style="width:50%" %)((( | ||
| 617 | **Результат обработки:** | ||
| 618 | |||
| 619 | Константин Константиновский, | ||
| 620 | 01.01.2025 вы оформили заказ EO-12345 на сумму 5100 с доставкой в г. Санкт-Петербург. | ||
| 621 | |||
| 622 | Состав заказа: | ||
| 623 | |||
| 624 | Название товара: Лейка садовая | ||
| 625 | Количество товара: 2 | ||
| 626 | Цена товара: 1500 | ||
| 627 | Скидка: 100 | ||
| 628 | Стоимость товара: 2 x (1500 - 100)= 2800 | ||
| 629 | |||
| 630 | Название товара: Лопата штыковая | ||
| 631 | Количество товара: 1 | ||
| 632 | Цена товара: 2500 | ||
| 633 | Скидка: 200 | ||
| 634 | Стоимость товара: 1 x (2500 - 200)= 2300 | ||
| 635 | ))) | ||
| 636 | {{/showhide}} | ||
| 637 | |||
| 638 | (% class="box" %) | ||
| 639 | ((( | ||
| 640 | **Читайте также:** | ||
| 641 | |||
| 642 | * [[Кампании>>doc:Main.Using.Smart_Communications.Campaign_list.WebHome]] | ||
| 643 | * [[Триггеры>>doc:Main.Using.Smart_Communications.Campaign_list.Triggers.WebHome]] | ||
| 644 | * [[Поля>>doc:Main.Using.Smart_Communications.Settings_SC.Data_field.WebHome]] | ||
| 645 | ))) |