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

# Динамический контент

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

# Использование

Внутри поля Контент можно задать JavaScript код с помощью двойных фигурных скобок:

Вы можете использовать все функции стандартной JavaScript библиотеки и стандартные классы. Ознакомиться подробнее (opens new window).

Контент

# Пример 1

Сумма 2 + 2 = {{return 2+2}}

Ожидаемый результат:

Сумма 2 + 2 = 4

# Пример 2

Для простых вычислений, где не труебуются какие-либо условие, можно опустить вызов команды return

Сумма 2 + 2 = {{2+2}}

Ожидаемый результат:

Сумма 2 + 2 = 4

# Пример 3

Поддерживаются условные операторы JavaScript, к примеру if/else

10 больше двух? - {{
				   if(10>2){
				     return "Да";
				   } else {
				     return "Нет";
				   }
				}}

Ожидаемый результат:

10 больше двух? - Да

# Пример 4

Для более сложных вычислений и правил поддерживаются внутренние функции, например:

Сумма 99 и 1 равна {{
				 function sum(arg1, arg2) {  
					 return arg1 + arg2;  
				 }  
				 return sum(99,1);
				}}

Если вы используете вложенные функции не забывайте явно вернуть результат с помощью return

Ожидаемый результат:

Сумма 99 и 1 равна - 100

# Пример 5

Внутри контента может быть сколько угодно разных JS скриптов

{{5 + 5}} больше {{4 - 2}}? - {{return "Да";}}

Ожидаемый результат:

10 больше 2? - Да

Однако, будьте аккуратны, чрезмерная нагрузка скриптами может повлиять на скорость вычисления контента

# Контекст

внутри JS кода, вам доступна возможность обратиться к текущему контексту через переменную data

# Пример 1

Вы находитесь в г.{{data.geo.city.nativeName}}

Ожидаемый результат:

Вы находитесь в г.Москва

# Пример 2

Также можно использовать условные операторы, чтобы лучше реагировать на контент

{{ 
  let cityName = data.geo.city.nativeName;
  let population = data.geo.city.population;
  let cityInfo = "Вы находитесь в городе " + cityName + ", который населяют " + population + " человек.";
  if (data.geo.city.isRegionCapital) {
    cityInfo += " Этот город является столицей региона.";
  }
  if (data.geo.city.isCountryCapital) {
    cityInfo += " Этот город является столицей страны.";
  }
  return cityInfo;
}}

Ожидаемый результат:

Вы находитесь в городе Москва, который населяют 12 615 078 человек. Этот город является столицей страны.

# Пример 3: Приветствие на основе времени суток

{{ 
  let hour = new Date().getHours();
  let greeting;
  if (hour < 12) {
    greeting = "Доброе утро";
  } else if (hour < 18) {
    greeting = "Добрый день";
  } else {
    greeting = "Добрый вечер";
  }
  return greeting;
}}

Ожидаемый результат:

Доброе утро

# Пример 4: Отображение погоды с эмодзи

{{ 
  let temperature = data.weather.temp;
  let weatherEmoji;
  if (temperature < 10) {
    weatherEmoji = "❄️";
  } else if (temperature >= 10 && temperature < 25) {
    weatherEmoji = "☀️";
  } else {
    weatherEmoji = "🌞";
  }
  return "Сегодня " + weatherEmoji + " температура " + temperature + "°C";
}}

Ожидаемый результат:

Сегодня ☀️ температура 28°C

# Параметры

Параметр Что содержит Тип Примеры значений Примечание
data.geo.city.nativeName Название города на родном языке string "Москва", "Paris" Используется для локализации контента.
data.geo.city.englishName Название города на английском языке string "Moscow", "Paris" Используется для интернационализации.
data.geo.city.russianName Название города на русском языке string "Москва", "Париж" Используется для русскоязычного контента.
data.geo.city.isRegionCapital Флаг, указывающий, является ли город столицей региона bool true, false Полезно для определения статуса города.
data.geo.city.isCountryCapital Флаг, указывающий, является ли город столицей страны bool true, false Полезно для определения статуса города.
data.geo.city.population Численность населения города number 12500000, 2140000 Используется для анализа демографических данных.
data.geo.region.nativeName Название региона на родном языке string "Московская область", "Île-de-France" Используется для локализации контента.
data.geo.region.englishName Название региона на английском языке string "Moscow Oblast", "Île-de-France" Используется для интернационализации.
data.geo.region.russianName Название региона на русском языке string "Московская область", "Иль-де-Франс" Используется для русскоязычного контента.
data.geo.region.population Численность населения региона number 7500000, 12200000 Используется для анализа демографических данных.
data.geo.country.nativeName Название страны на родном языке string "Россия", "France" Используется для локализации контента.
data.geo.country.englishName Название страны на английском языке string "Russia", "France" Используется для интернационализации.
data.geo.country.russianName Название страны на русском языке string "Россия", "Франция" Используется для русскоязычного контента.
data.geo.country.population Численность населения страны number 146000000, 67000000 Используется для анализа демографических данных.
data.page.schemaOrg.brandName Название бренда для использования в структурированных данных Schema.org string "Apple", "Nike" Используется для SEO и улучшения видимости в поисковых системах.
data.page.schemaOrg.offer.price Цена предложения для использования в структурированных данных Schema.org number 99.99, 149.95 Используется для SEO и улучшения видимости в поисковых системах.
data.page.schemaOrg.offer.availability Доступность предложения для использования в структурированных данных Schema.org string "InStock", "OutOfStock" Используется для SEO и улучшения видимости в поисковых системах.
data.page.schemaOrg.aggregateRating.ratingValue Средний рейтинг для использования в структурированных данных Schema.org number 4.5, 3.8 Используется для SEO и улучшения видимости в поисковых системах.
data.page.schemaOrg.aggregateRating.reviewCount Количество отзывов для использования в структурированных данных Schema.org number 120, 450 Используется для SEO и улучшения видимости в поисковых системах.
data.page.pageClearedUrl Очищенный URL страницы string "/about", "/contact" Используется для анализа и маршрутизации.
data.page.pageTitle Заголовок страницы string "Главная страница", "О нас", "Контакты" Обязательно для заполнения, используется для SEO и удобства пользователей.
data.weather.temp Текущая температура number 22.5, -3.0 Используется для отображения текущей погоды.
data.weather.tempFeelsLike Ощущаемая температура number 20.0, -5.0 Используется для отображения ощущаемой погоды.
data.weather.humidity Влажность воздуха number 65, 80 Используется для отображения текущей погоды.
data.device.browser Браузер пользователя string "Other", "Safari", "Edge", "Opera", "InternetExplorer", "YandexBrowser", "Chrome", "Firefox" Используется для анализа трафика и оптимизации под разные браузеры.
data.device.deviceType Тип устройства пользователя string "Other", "Smartphone", "Desktop", "Tablet" Используется для анализа трафика и оптимизации под разные устройства.
data.device.os Операционная система пользователя string "Other", "Linux", "MacOs", "Windows", "iOS", "Android" Используется для анализа трафика и оптимизации под разные ОС.
data.utm.campaign UTM-метка "campaign" для отслеживания рекламных кампаний string "summer_sale", "new_year_promo" Используется для анализа эффективности рекламных кампаний.
data.utm.content UTM-метка "content" для отслеживания контента рекламы string "banner_1", "email_newsletter" Используется для анализа эффективности рекламных кампаний.
data.utm.medium UTM-метка "medium" для отслеживания канала рекламы string "cpc", "email" Используется для анализа эффективности рекламных кампаний.
data.utm.source UTM-метка "source" для отслеживания источника трафика string "google", "facebook" Используется для анализа эффективности рекламных кампаний.
data.utm.term UTM-метка "term" для отслеживания ключевых слов string "best_deals", "cheap_phones" Используется для анализа эффективности рекламных кампаний.
data.dateAndTime.dayOfWeekNumber Номер дня недели number 1, 3, 7 Используется для анализа трафика по дням недели.
data.dateAndTime.weekNumberInMonth Номер недели в месяце number 2, 4 Используется для анализа трафика по неделям месяца.
data.dateAndTime.clientLocalHour Локальное время пользователя (час) number 14, 21 Используется для анализа трафика по времени суток.
data.dateAndTime.isNight Флаг, указывающий, является ли текущее время ночью bool true, false Используется для анализа трафика по времени суток.
data.dateAndTime.isMorning Флаг, указывающий, является ли текущее время утром bool true, false Используется для анализа трафика по времени суток.
data.dateAndTime.isWeekend Флаг, указывающий, является ли текущий день выходным bool true, false Используется для анализа трафика по дням недели.
data.session.number Номер сессии пользователя number 1, 2, 3 Используется для анализа активности пользователя.
data.session.durationSec Длительность сессии в секундах number 1200, 1800 Используется для анализа активности пользователя.
data.session.pagesOpenedInThisSession Количество страниц, открытых в текущей сессии number 5, 10 Используется для анализа активности пользователя.

Теперь, когда вы ознакомлены с возможностями динамического контента и использования JS кода в вариантах персонализации, вы можете легко изменять контент в соответствии с правилами и данными пользователя.