# Динамический контент в варианте персонализации

Внутри каждого варианта персонализации можно добавлять как статический, так и динамический контент. Если нужно реагировать на данные посетителя — город, устройство, UTM-метки, погоду, время суток — используйте JavaScript прямо в шаблоне.

Это позволяет, например:

  • Показывать название города посетителя в заголовке
  • Менять призыв к действию в зависимости от устройства
  • Подставлять количество клиентов в регионе
  • Предлагать разные акции в рабочие и выходные дни
  • Адаптировать текст под погодные условия

# Как это работает

В поле «Контент» (и в любом другом текстовом поле модификации) можно вставить JavaScript в двойных фигурных скобках — например, {{ data.geo.city.nativeName }}. Sales Ninja вычислит код на сервере и подставит результат до отправки контента в браузер посетителя.

Доставка в г. {{data.geo.city.nativeName || "вашем городе"}} за 1 день

Результат для москвича: Доставка в г. Москва за 1 день

Внутри кода доступна переменная data с информацией о посетителе (геолокация, устройство, UTM, погода, время, сессия, данные страницы), а также шаблонные функции вроде simulateCityClients.

📖 Полный справочник — синтаксис, все поля data, шаблонные функции, ограничения и обработка ошибок — на отдельной странице JavaScript-интерпретатор. Тот же интерпретатор работает в A/B-тестах и действиях по правилам.


# Примеры для персонализаций

# Город в заголовке

Доставка в г. {{data.geo.city.nativeName}} за 1 день

# Призыв под устройство

{{
  if (data.device.deviceType === "Smartphone") {
    return "Скачайте наше приложение — скидка 20%";
  }
  return "Полный каталог на десктопе";
}}

# Количество клиентов в городе

Уже {{simulateCityClients(100, 800)}} клиентов в г. {{data.geo.city.nativeName || "вашем регионе"}} выбрали нас

# Акция в выходные

{{ data.dateAndTime.isWeekend ? "В выходные скидка 15%!" : "Скидка 10% до конца недели" }}

⚠️ Любое поле data может быть null (например, город не определился по IP). Всегда добавляйте запасное значение — {{data.geo.city.nativeName || "ваш город"}}. Подробнее — в разделе обработка null и ошибок.


# Это не «Пользовательский JavaScript»

Динамический контент ({{ }}) вычисляется на сервере до отдачи страницы. Не путайте его с Пользовательским JavaScript варианта, который выполняется в браузере после применения всех модификаций и имеет доступ к DOM. Сравнение — в справочнике интерпретатора.


# Следующие шаги