# Динамический контент в варианте персонализации
# Динамический контент
Внутри каждого варианта персонализации вы можете добавлять как статический, так и динамический контент. Если вы хотите реагировать на данные пользователя и изменять контент по каким-то правилам, вы можете использовать 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 кода в вариантах персонализации, вы можете легко изменять контент в соответствии с правилами и данными пользователя.