konvr
интерактивное многофакторное тестирование лендингов с большим числом вариантов raise@konvr.ru
контакты
логин
пароль
регистрация, напомнить



Для всех:

Изменения в коде при получении данных из внешних источников перед показом (определения города пользователя)

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

  1. Выше скрипта добавляется синхронная загрузка API Яндекс-карт (внимание! могут быть ограничения по числу загрузок в сутки)
  2. В конце скрипта - блок //остальные скрипты (function(w, d, s, t) {} //остальные скрипты, в котором стартует работа АПИ, оборачивается в отдельную функцию konvr_geoinit, которая исполнится после загрузки данных с Яндекса
  3. Название функции передается в объект ymaps.ready(konvr_geoinit). После загрузки города происходит вызов konvr_geoinit, в котором мы берем данные о городе и подставляем их в исходный массив var geolocation = ymaps.geolocation; konvr['factors']['k_gorod'][1]=geolocation.city;

Серым подсвечены старые строчки, желтым - новые

<script src='//api-maps.yandex.ru/2.0/?load=package.standard&lang=ru-RU' type='text/javascript'></script>

<script>
var konvr=
{
clientid: *
//*********************************************************
factors: //факторы, которые подбираем. порядок одинаковый для factors и showfactors, после начала эксперимента нельзя менять ничего
{
//*********************************************************
k_gorod: ['','user town'], //где - формируем заголовок. Вместо 'user town' - конкретный автоопределенный город через Я.Карты
//*********************************************************
},
showfactors://значения по умолчанию. порядок одинаковый для factors и showfactors, после начала эксперимента нельзя менять ничего
{
//*********************************************************
k_hgorod: '',
//*********************************************************
},

apiurl: '/'+'/api.konvr.ru/api.php',//НЕ МЕНЯЕМ
staticjsurl: '/'+'/api.konvr.ru/js_static.js'//НЕ МЕНЯЕМ
};

//собираем итоговое разрешение на прием трафика
konvr['trafficaccept'] = konvr['trafficaccept'] && konvr['referer_accept_regexp'].test(document.referrer) && !konvr['referer_deny_regexp'].test(document.referrer);

function konvr_draw()//рисует установленные параметры либо дефолтные
{
//*********************************************************
return;
};

function konvr_draw_once()//для однократного показа, вызывается после konvr_draw() при загрузке АПИ для нового участника эксперимента
{
//*********************************************************
return;
};


ymaps.ready(konvr_geoinit);
//geoinit
function konvr_geoinit()
{
var geolocation = ymaps.geolocation;
konvr['factors']['k_gorod'][1]=geolocation.city;

//остальные скрипты
(function(w, d, s, t) {
//t = d.documentElement.firstChild;
s = d.createElement('script');
s.type = 'text/javascript';
s.src = konvr['staticjsurl'];
s.setAttribute('async', 'true');
//t.insertBefore(s, t.firstChild);
d.body.appendChild(s);
})(window, document);
//остальные скрипты

};
//geoinit


</script>

Пример:

Было:

Стало:

konvr
интерактивное многофакторное тестирование лендингов с большим числом вариантов raise@konvr.ru
контакты