Задача определения местоположения, скажу честно, встречается очень редко. И хотя на деле все куда интересней, наши сайты привыкли делать универсальными под всех и сразу, никакой персонализации, а ведь это тренд 2015 года 🙂
Как узнать страну и город при помощи api yandex maps
Для это задачи нам понадобится скрипт Яндекса, и не забывайте про jQuery 🙂
<script src="http://api-maps.yandex.ru/2.0/?load=package.full&lang=ru-RU" type="text/javascript"></script>
В нашем скрипте сразу пишем:
ymaps.ready(function(){ console.log(ymaps.geolocation); });
и видим перед собой объект – лично для меня самыми привлекательными свойствами тут являются city и country. Ну, во-первых, мы можем где-нибудь записать город у себя на сайте (главное не переборщить, а то подумают что вы их вычислили по ip 🙂 )
ymaps.ready(function(){ var geo = ymaps.geolocation; $('.city').html(geo.city); });
а во-вторых – зная страну, мы можем записать значение в куки браузера. Кстати, если в дальнейшем вы захотите использовать эти данные не только через js, советую прочитать о том как записать просмотренные товары.
Как записать в куки при помощи javascript
Для начала нам понадобится jquery.cookie.js. Рассмотрим следующий пример – наш интернет магазин работает для России и Украины, и мы хотим сделать так, чтобы пользователю цены отображались в соответствующей валюте.
ymaps.ready(function(){ //console.log(ymaps.geolocation); var geo = ymaps.geolocation; $('.city').html(geo.city); if (geo.country == 'Украина') { var myChoice = 'UAH'; } else if (geo.country == 'Россия') { var myChoice = 'RUB'; } $.cookie('CURRENCY', myChoice, { expires: 5, path: '/', }); });
Давайте пройдемся по коду – мы записываем объект содержащий наши гео данные в переменную, имя нашего города записываем на странице в класс city, а дальше смотрим откуда зашел пользователь и записываем нашу валюту в переменную. После этого – записываем в куки браузера записываем на 5 дней значение переменной. По синтаксису видим, что ‘CURRENCY’ – название нашей переменной в куки, в myChoice мы записали значение, expires – количество дней, ну и путь ставим относительно корня сайта.
И это далеко не все варианты применения – для некоторых городов есть свои телефоны, свои службы и условия доставки. Конечно, пользователю нужно давать возможность прочитать про все города, но в первую очередь ему будет интересна информация для своего города и страны.
ПС – можно также дописать проверку “а есть ли такая переменная в куки”:
// console.log($.cookie('CURRENCY')); if (!$.cookie('CURRENCY')) { $.cookie('CURRENCY', myChoice, { expires: 5, path: '/', }); }
Как в 1С-Битрикс использовать валюту пользователя
Проверим, есть ли в куки валюта (этот код я поместил в самый верх шаблона):
<? if ($_COOKIE['CURRENCY']) { $current_currency = $_COOKIE['CURRENCY']; } else { $current_currency = 'USD'; } ?>
А в вызове шаблона компонента, например каталога, меняем соответствующую строчку на:
"CURRENCY_ID" => $current_currency,
Таким вот образом мы можем узнать свое местоположение, вывести страну и даже город, записать все это дело в куки при помощи js, и потом, уже на стороне сервера, вытащить валюту нашей страны. Магия, что тут еще сказать 🙂