Изменения в коде при получении данных из внешних источников перед показом (определения города пользователя)
Если мы хотим использовать внешнее определение города пользователся (например, с использованием API Яндекс-карт), мы можем изменить скрипт таким образом, что сперва будет загружаться информация о городе, подставляться в список значений для ротации, а только потом - отрисовываться лендинг.
- Выше скрипта добавляется синхронная загрузка API Яндекс-карт (внимание! могут быть ограничения по числу загрузок в сутки)
- В конце скрипта - блок //остальные скрипты (function(w, d, s, t) {} //остальные скрипты, в котором стартует работа АПИ, оборачивается в отдельную функцию konvr_geoinit, которая исполнится после загрузки данных с Яндекса
- Название функции передается в объект 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>
Пример:
Было:
Стало:
|