Давно не было статей по opencart, а наверное зря, потому как информации которую хотелось бы разместить уже скопилось столько, что наверное уже не смогу ее разместить физически((( Но данную статью пиши чисто для себя, что бы не забыть и использовать ее в дальнейшем.
Сегодня речь пойдет о том, как определить местоположение покупателя или клиента!
Содержание скрыть
Причина появления этого сервиса?
С появлением интернета практически у каждого пользователя сейчас есть выход в глобальную сеть и хоть большинство трафика и приходится на социальные сети и развлекательный контент, все равно каждый пользователь хоть раз, но заказывал, что то себе из интернет магазина.
Но представьте себе, что вы живете в Комсомольск-на-Амуре и хотите заказать через интернет себе, допустим пару кроссовок или какую то одежду. Вы заходите в интернет и начинаете лихорадочно перебирать все сайты из поиска и большинство сайтов из того, что вы открыли были с представительством в Москве, а Вам нужно, что бы сайты открылись из вашего города, потому как доставку хотите уже на вечер. Более опытные люди сразу бы набрали в поиске купить кроссовки в Комсомольск-на-Амуре, но таких меньшинство. Вот поэтому “умные дяди” придумали для нас региональную выдачу, а другие придумали поддоменную иерархическую структуру своих интернет магазинов которая автоматически определяет по вашему IP из какого вы города и перенаправляет вас на нужный сайт (это прямо грубо на пальцах)
Как узнать город по IP адресу
Немного истории и логики
Буквально в 2009 году Яндекс только начал делать первые шаги по определению региональной выдачи для коммерческой тематики, что навело очень много шуму, потому как многие начали терять трафик, хотя толку от этого трафика было ноль! (см пример выше) В яндексе уже давно поняли, что если не разделить выдачу по региональному значению, то можно убить на корню любую предпринимательскую деятельность и один сайт по продаже кроссовок займя выдачу будет показываться на первой странице по всей России тогда как он работает только в пределах садового кольца)
Кстати сейчас яндекс уже определяет вплоть до района и дома ваше местонахождение – данная технология нужна больше опять для маркетологов и рекламщиков которые хотят показать допустим рекламу не на весь город, а допустим на определенный район или округ (допустим ветеринарная клиника или какое то кафе)
Таких примеров использования можно придумать много, но надо знать что все это делается не только для облегчения жизни пользователя, но и для максимальной возможности дать предпринимателям рекламу своего продукта для целевой аудитории
Как работает этот механизм?
Как вы уже поняли из прочитанного выше, определение вашего местоположения идет по IP адресу.
Ip адрес это числовое значение которое состоит из четырех частей разделенных точками – XXX.XXX.XXX.XXX
Этот IP адрес распределился по всем странам, а потом внутри этих стран, по городам и так далее.
Допустим для Москвы есть диапазоны IP начинающиеся:
Определение IP адреса пользователя
109.63.213.134-109.63.213.139
Это означает, что ip адреса начинающиеся на 109.63.213.137 будет относится к Москве , как и 109.63.213.139 и так далее
На основе известных диапазонов сети строится уже алгоритмы (фильтры) которые могут в автоматическом режиме обрабатывать эти данные и передавать дальше
Как это можно и нужно использовать?
Давайте представим, что у Вас есть магазин и несколько офисов в других городах, и перед вами встает вопрос, что нужно делать три разных сайта под каждый город, а это я вам скажу и накладно чисто финансово и затратно с точки зрения продвижения (говорим про СЕО)
На помощь нам приходит техническое решение которое позволяет построить сайт на поддоменах, где каждый поддомен будет относится к определенному городу и при заходе на сайт, сервис будет определять местоположение клиента и перенаправлять его на нужный поддомен.
В данном способе больше плюсов чем минусов, давайте рассмотрим:
- Один сайт на сколько угодно большое количество поддоменов
- Больше трафика
- Все поддомены в поиске, а это значит что есть больше вероятности, что перейдут именно к вам
- В региональной выдаче у Вас будут преференции от поисковых систем
- Большая лояльность от покупателей
- Правильная перелинковка между поддоменами даст положительный результат на позиции в целом по всем сайтам
Какой сервис выбрать?
Такой выбор делается сразу на начальном этапе, потому как лошадей на переправе не меняют! Из того что сейчас представлено на рынке я могу выделить два варианта:
- Локальный GEO IP
- Сервис ipwhois.io
Локальный GEO IP – абсолютно бесплатный, но его нужно постоянно будет обновлять и если это делаете не Вы тогда вы будете платить за эту работу программисту, что сведет на нет, абсолютную бесплатность данного варианта
Сервис ipwhois.io – частично бесплатный (до 10 тыс запросов в месяц) дальше уже надо будет подключать тарифные планы, но могу сказать, что при средних показателях сайта, этого будет выше крыши!
Подключать этот сервис можно через API что говорит о том, что вы будете получать точные данные автоматически с сервера и можно забыть о ручночном регулярном обновлении данных если у вас все сделано через GEOIP
Сервис очень легко подключается через API, отправив GET запрос http://free.ipwhois.io/json/109.63.213.137
моментально получаем ответ:
ответ < «ip»: «109.63.213.137», «success»: true, «type»: «IPv4», «continent»: «Европа», «continent_code»: «EU», «country»: «Россия», «country_code»: «RU», «country_flag»: «https://cdn.ipwhois.io/flags/ru.svg», «country_capital»: «Москва», «country_phone»: «+7», «country_neighbours»: «GE,CN,BY,UA,KZ,LV,PL,EE,LT,FI,MN,NO,AZ,KP», «region»: «Москва», «city»: «Москва», «latitude»: 55.755826, «longitude»: 37.6173, «asn»: «AS12714», «org»: «Net By Net Holding LLC», «isp»: «Net By Net Holding LLC», «timezone»: «Europe/Moscow», «timezone_name»: «Moscow Standard Time», «timezone_dstOffset»: 0, «timezone_gmtOffset»: 10800, «timezone_gmt»: «GMT +3:00», «currency»: «Russian Ruble», «currency_code»: «RUB», «currency_symbol»: «₽», «currency_rates»: 64.45, «currency_plural»: «Russian rubles» >
Дальше уже в зависимости от Вашего скрипта и настроек сайта, можно выдергивать от сюда любые данные.
Для примера если у вас зарубежный магазин который торгует не только в своей стране, но и допустим по СНГ будет полезно не только смена сайта, но и смена валюты, потому как в каждой стране она своя, и при том еще с конвертацией по сегодняшнему курсу!
Как Вам? а тут все это можно сделать! Документация как говорится не бей лежачего https://ipwhois.io/ru/documentation разберется даже ребенок!
Так что скоро выпускаю в релиз, новый сайт на котором будет реализовано через сервис ipwhois.io перенаправление и определение покупателя о его местонахождения и бонусом у меня на сайте будут меняться только два блока на сайте, это шапка с контактами (в каждом регионе у нас свой телефонный код) и подвал сайта где указаны не только контакты но и адрес магазина или склада .
Так что вот такой магазинище скоро будет выпущен в свободное плаванье по просторам интернета.
Источник: nibbl.ru
Определение системой места проживания посетителя сайта по ip-адресу
Используйте такую возможность системы, как задание ограничений по географическому принципу (геотаргетинг). Для этого вам всего лишь следует загрузить базы данных для определения страны и города.
Как загрузить базу данных стран и городов?
Пo умолчанию в дистрибутиве продукта предусмотрена поставка только базы по странам. Для загрузки баз данных необходимо выполнить следующие действия:
- Откройте страницу Настройки > Настройки продукта > Настройки модулей > Веб-аналитика и перейдите на закладку Страна и город. В таблице перечислены возможные источники определения города и страны, поддерживаемые модулем Веб-аналитика.
- mod_GeoIP — модуль для Apache, позволяет не только определять посетителя по IP адресу, но и блокировать посещение.
- PECL-расширение php geoip.
- Модуль доступа к базе данных geoip, написанный на php.
- Определение страны или города по таблицам модуля статистики.
Можно использовать любые способы определения страны и города посетителя. Рекомендуется использовать специальный мастер (четвертая строка в таблице). Все дальнейшие действия описаны для данного способа определения геоположения посетителя.
- Нажмите на ссылку мастер в четвертой строке таблицы. Откроется Мастер создания индекса
.
- Выберите тип индекса: Создание индекса для определения страны и города по IP адресу.
- Если у вас базы не загружены, то дополнительно выполните следующее:
- В окне мастера нажмите на ссылку
подходящего из трех представленных источников (для Российской федерации рекомендуется последний — IpGeoBase) .
- Скачайте базу с открывшегося сайта.
- Распакуйте скачанный архив на сайт в папку /bitrix/modules/statistic/ip2country
.
Если базы все же не были загружены, то система выдаст предупреждение и предложит скачать необходимые файлы (для этого воспользуйтесь кнопкой Назад и выполните действия по загрузке).

Теперь система может определять место проживания посетителя по IP-адресу.
Заключение
Итак, вы узнали, что используя средства модуля Веб-аналитика, можно загрузить базу данных стран и городов и использовать ее для ограничения показа баннеров по географическому принципу.
Источник: www.acrit-studio.ru
Определение города по IP для сайта
В данный момент API Карт, подключаемое в панели управления uCoz возвращает только страну и координаты посетителя.
О заметке
Определение местоположения покупателя — одна из важнейших задач в электронной коммерции.
В заметке будем рассматривать способ определения страны, региона и города посетителя для сайта. Вся информация получена из песочницы API Яндекс.Карт, мы просто ее подготовим для магазина uCoz.
Подключение сервиса Яндекс.Карты
В первую очередь необходимо подключить сервис карт в панели управления сайтом. Для этого переходим в настройки интернет магазина.
В настройках листаем вниз страницы и выбираем в пункте «Использовать сервис карт:» — Yandex Maps.
Теперь необходимо получить API ключ для интернет магазина, нам предложено перейти по ссылке «Получить ключ для выбранного API». Сделаем это.
На открывшейся странице заполняем данные и нажимаем «Получить API ключ».
На открывшейся странице копируем полученный API ключ и копируем его в панель управления сайтом.
Не забываем сохраниться
Определение местоположения
В первую очередь необходимо в head страницы (например, оформления заказа) поместить код:
Теперь размещаем сам скрипт определения местоположения.
Дожидаемся загрузки API и готовности DOM.
ymaps.ready(init);
function init() < // Данные о местоположении, определённом по IP var geolocation = ymaps.geolocation; // Результат смотрим в консоли console.log(geolocation.country, geolocation.city, geolocation.region); >
После того, как мы получили данные о местоположении, мы можем делать с ними все, что захотим: заполнить за пользователя форму заказа, отобразить особые условия доставки, скрыть ненужные способы оплаты, показать стоимость доставки на странице товара.
geolocation.country | Страна |
geolocation.region | Регион |
geolocation.city | Город |
Автозаполнение адреса доставки
Расширим наш скрипт, чтобы облегчить пользователям оформление заказа, внесем полученные данные о местоположении в поле формы «Адрес доставки».
Для этого нам нужно знать id поля с адресом доставки, для этого заходим в Панель управления сайтом — Интернет магазин — Управление полями заказа. Смотрим последнюю перед символом «$» цифру в «Код поля для шаблона»:
В примере это цифра 2, а id = «order-fld-2» . Теперь мы можем взаимодействовать с этим полем. Если у вас подключен jQuery, то просто запишем местоположение в это поле.
if (geolocation) < $(«#order-fld-2»).html(geolocation.country + ‘, ‘ + geolocation.region + ‘, ‘ + geolocation.city); >else
Вот, что получилось:
Итого
Объединим все вместе и получим:
ymaps.ready(init); function init() < var geolocation = ymaps.geolocation; if (geolocation) < $(«#order-fld-2»).html(geolocation.country + ‘, ‘ + geolocation.region + ‘, ‘ + geolocation.city); >else < console.log(‘Не удалось установить местоположение’); >>
Статьи по теме
- Вывод предполагаемой даты доставки товара
- Сниппеты Яндекс — иконки социальных сетей в результатах поиска
- Быстрый заказ в интернет магазине — почтовая форма uCoz
- Транспортные компании + Модуль доставки uCoz
- Яндекс.Вебмастер товары и цены — подключение магазина uCoz
Обсуждение
—>Всего комментариев : 33
Порядок вывода комментариев:
2
Спам
1 гость • 17:49, 04.09.2013
Это работает, круто!
0
Спам
2 Skazis • 21:28, 04.09.2013
Спасибо. Нужно попробовать!
0
Спам
3 Сергей • 17:52, 14.11.2013
А куда вставить сам скрипт?
0
Спам
4 Сергей • 09:46, 15.11.2013
Сергей, в шаблон той страницы, на которой хотите вывести город пользователя. Например, на странице оформления заказа
1
Спам
5 Сергей • 11:12, 15.11.2013
Спасибо за подсказку.
Можно к мануалу добавить для таких как я:
Скрипт загрузить на сервер сайта в папку «js» и на странице, где хотим вывод местоположения:
0
Спам
6 Сергей • 11:23, 15.11.2013
Сергей, спасибо за комментарий. На самом деле скрипт можно в любую папку загрузить, главное правильно подключить его в шаблоне.
0
Спам
7 Light • 12:23, 25.11.2013
0
Спам
8 Light • 12:26, 25.11.2013
А все понял. Оказывается с полем типа text такое не прокатывает, только с textarea.
Вопрос: а что еще яндекс умеет определять? Индекс почтовый к примеру сможет?
0
Спам
9 Сергей • 14:02, 25.11.2013
Light, для текстового поля будет так:
ymaps.ready(init);
function init() <
var geolocation = ymaps.geolocation;
if (geolocation) <
$(‘#order-fld-2’).attr(«value»,geolocation.country + ‘, ‘ + geolocation.region + ‘, ‘ + geolocation.city);
> else <
console.log(‘Не удалось установить местоположение’);
>
>
Просто замените это в файле скрипта.
Даже не знаю насчет индекса почты, разве что индекс центрального отделения. Вот здесь еще посмотрите http://api.yandex.ru/maps/jsbox/geocode
0
Спам
10 Сергей • 15:09, 20.01.2014
mimi, она находится в шаблонах «Страницы служебных форм» при условии .
0
Спам
11 woodart • 18:14, 15.02.2014
😀 Работает.
Подключил этот скрипт к почтовой форме. К ней же подлючен скрипт который передает ссылку на страницу и название материалла 🙂
Т.К. решил обойтись без магазина на юкоз. Магазин сделал из каталога файлов
0
Спам
12 Сергей • 18:56, 15.02.2014
Да, конечно, это работает не только для любого модуля uCoz)) главное правильно указать, куда записать место положения)
0
Спам
13 Сергей • 15:10, 06.03.2014
Привязать город к стоимости доставки можно только через внешний калькулятор доставки. Урока такого пока нет.
0
Спам
14 alexbol22 • 22:23, 27.11.2014
Здравствуйте Сергей. Подскажите, а можно ли сделать наоборот? Что бы при оформлении заказа покупатель ввел адрес доставки, а скрипт поставил метку на карте?
0
15 Сергей • 22:35, 27.11.2014
Сделать можно, но нужно разбираться с API Яндекс.Карт. Больше ничего не могу добавить 🙁
1
Спам
16 newcormix • 14:34, 06.01.2015
Здравствуйте Сергей! не совсем понял что это и где- Дожидаемся загрузки API и готовности DOM .
и если честно вообще ничего не получается, то-ли чего-то не знаю или не так понимаю.
В идеале пытаюсь сделать как тут http://zipweld.ru/shop/43/desc/svarochnaja-gorelka-kemppi-fe-27-3-5-m
0
Спам
17 lamajor90x • 18:22, 19.03.2015
Привет. На самом деле урок очень полезен и у меня все получилось, но не с первого раза, потому что расписаны и разделены коды что не нужно читателям. Картину восстанавливают только комментарии. Лишь благодаря им все получилось!
0
18 Сергей • 10:37, 24.03.2015
Спасибо за отклик. Но есть же пункт Итого, где весь код собран воедино 🙂
0
Спам
19 guseva • 11:32, 22.10.2015
Замечательный скрипт. Все встает. Для тех кто отправляет по всей России- это палочка выручалочка. Потому-что чаще покупателям лень вводить правильно и развернуто информацию. Сергей, еще раз спасибо.
Вы делаете наш бизнес легче и качественнее!
0
Спам
20 for-me • 23:51, 10.12.2015
Скажите как сделать, чтобы, зная место доставки, скрывать ненужные способы доставки (самовывоз, курьерская). Это очень актуально
0
Спам
21 mmmsotochka • 18:07, 29.10.2016
Здравствуйте.
А как создать и указать свою строку для ставки? Вместо $(‘#order-fld-2’)
0
22 Сергей • 09:21, 31.10.2016
Замените ‘#order-fld-2’ на селектор для своего поля.
0
Спам
23 mmmsotochka • 12:14, 31.10.2016
ymaps.ready(init);
function init() <
var geolocation = ymaps.geolocation;
if (geolocation) <
$(‘123’).attr(«value»,geolocation.country + ‘, ‘ + geolocation.region + ‘, ‘ + geolocation.city);
> else <
console.log(‘Не удалось установить местоположение’);
>
>
Если можно — пример(((
0
24 Сергей • 12:35, 31.10.2016
$(‘input[name=»123″]’)
0
Спам
25 mmmsotochka • 13:28, 31.10.2016
ymaps.ready(init);
function init() <
var geolocation = ymaps.geolocation;
if (geolocation) <
$(‘input[name=»123″]’).attr(«value»,geolocation.country + ‘, ‘ + geolocation.region + ‘, ‘ + geolocation.city);
> else <
console.log(‘Не удалось установить местоположение’);
>
>
Не хочет прописывать в поле
0
Спам
26 gios_am • 12:52, 23.02.2019
Спасибо за скрипт
А можно сделать, чтобы в странице заказа при заполнении адреса доставки рядом была иконка карт и при нажатии открывалась яндекс карта с функцией (мое местонахождение) и при нажатии на кнопку геолокации, автоматиеский заполнялся адрес (то есть не только город, но и улица, и дом).
А если не нажимает на кнопку карты, то может прописать в адрес доставки что хочет.
0
27 Сергей • 09:37, 25.02.2019
Добрый день! Да, такое возможно. Изучите API Яндекс.Карт, готового решения, к сожалению, нет.
0
Спам
28 yshafigov • 22:43, 27.09.2020
А как можно скрыть определенные поля для пользователей из конкретного города? Пишу такой код, но не работает, вдруг кто может указать в чем ошибка:
function init() <
var geolocation = ymaps.geolocation;
if(geolocation==’Ташкент’) <
document.getElementById(description6).style.display = «block»;
>
console.log(geolocation.city);
>
0
29 Сергей • 23:54, 27.09.2020
Если надо скрыть, то добавьте else
if(geolocation==’Ташкент’) <
document.getElementById(description6).style.display = «block»;
> else <
$(‘#description6’).hide()
>
0
Спам
30 yshafigov • 18:49, 28.09.2020
Спасибо за ответ, не ожидал что получу его! К сожалению, не получается выполнить скрипт — элемент не скрывается. Пробовал уже не только с желаемым полем, а с другими более очевидными элементами, типа «title» в шапке сайта — всё равно не работает. При этом в консоль пишет что города определяются правильно.
Пробовал if(geolocation.city==’Ташкент’) — всё равно не помогает.
0
31 Сергей • 19:15, 28.09.2020
а console.log(geolocation.city); что показывает? город определяется?
0
Спам
32 yshafigov • 19:41, 28.09.2020
Да, в консоль специально выше в коде оставлял вывод города, чтобы можно было убедиться что город написан правильно.
document.getElementById(«item-heading»).style.display = «none»; — пытаюсь скрыть для проверки, тоже не выходит.
0
Спам
33 yshafigov • 21:37, 28.09.2020
Нашел причину: на моей странице не было div с id, я вписывал туда названия class и поэтому не работало по геолокации + необходимо было указать «var geolocation = ymaps.geolocation.city;». После этого в консоли увидел ошибку «Cannot read property ‘style’ of null» и тут дошло что я прописываю названия class, а не id.
Если в будущем кому-то будет полезно, то правильный код следующий:
ymaps.ready(init);
function init() <
var geolocation = ymaps.geolocation.city;
if(geolocation==’Москва’) <
document.getElementsByClassName(‘class_name’)[0].style.display=’none’;
>
>
// ‘[0]’ — нужен для того, чтобы возвращался первый элемент с этим классом, в случае, если у вас много одинаковых элементов на странице (типа массива получается).
//конечно лучше так не делать и сразу присвоить id к нужным элементам, но если запарились как я, то может поможет моё решение.
//для скрытия элементов по id — будет работать метод, который подсказал Сергей в комментарии выше.
Источник: ucozmagazines.ru