Иногда нужно отобразить на сайте контекстную информацию в зависимости от региона пользователя. Данный модуль позволяет определять местонахождение пользователя по его IP адресу.
Модуль может работать в двух режимах:
- Локальный (по умолчанию) — используется локальная база данных
- Удалённый — данные загружаются с xml сервиса ipgeobase.ru
Пример использования:
drupal_set_message('Зенит чемпион!');
}
Структура возвращаемого объекта:
(
[country] => RU
[city] => Нижний Новгород
[subject] => Нижегородская область
[fo] => Приволжский федеральный округ
[latitude] => 56.329918
[longitude] => 44.009193
)
latitude и longitude это широта и долгота, которые можно использовать в своём модуле для отображения местоположенния пользователя на картах яндекса и гугла.
База IP блоков для России и Украины находится в архиве с модулем.
Вложение | Размер |
---|---|
ipgeo.zip | 292.2 КБ |
Комментарии
Полезная штука. База загружается через батч?
И кстати: есть ещё хороший модуль smartip, но тот использует другую базу
Пока нет.
Посмотрел. Модуль хороший, но те базы с которыми он работает для России и Украины мало пригодны.
а возможно его объединить с domain access? Редирект на субдомен
Возможно. Модуль сам ничего не делает, а только даёт возможность вам определить регион пользователя.
а если IP у народу плавающий, тогда как он ся ведет?
так подсеть то одна
у меня почемут каждый раз разная
яндекс тебя каждый раз в разном регионе определяет?
а шут его знает .
У нас провайдеры веселые. Ты в одном городе, а по тестам - совсем в другом)
а яндекс и гугл как определяет твой регион ?
видимо в окно следят , где ты находишься
ну я хз что и как. Знаю что ис-за смены подсети мне пришлось отключить безопасность на хосте.
Сперва меня не пускало, думал ис-за айпи плавающего. Но оказалось что и сеть меняетсо. Сперва один номер, потом другой... И так с каждым коннектом. Тобишь я не могу просто ввести подсеть и сказать что отсюда всем можно. Пришлось просто выключить.
а для 6 версии есть что то подобное?
скажите а как себя будут вести поисковые роботы? какая им страна будет подставлятся?
Поставил спасибо работает - но все-таки выдает не мой город а город провайдера. Как с этим можно бороться? Яндекс как-то же определяет правильный город?
Тут тоже город провайдера показывает?
Да, ставил модуль smart-ip - аналогично. Яндекс показывет правильно.
Возможно ты когда то указывал свой город в яндексе? Если нет, то значит у яндекса другая база.
Да кстати это возможно вполне. Но например на sportbox.ru - там в шапке погода от sinoptik - тоже определяет мой город правильно.
Зашел на хабр написал Geo ip в поиске
Выдало http://habrahabr.ru/post/146597/
Ваш модуль лучше ?
ps. Там даже какая то статистика приведена по скорости работы
А можете переписать модуль для 6 версии друпала?
А то все семерка семерка....
Для шестёрки, наверное, можешь использовать этот модуль: http://drupal.org/project/ipgeobase
Там вроде про друпал ни слова
Пока нет
жаль ((
Хороший модуль.
А вот как его результат, который "$region->city", привинтить в поле выбора города из таксономии в блоке?
hook_form_FORM_ID_alter — универсальный способ
интересный полумодуль
В последнее время сервис ipgeobase.ru стал глючить (в плане долгого подвисания при запросах к этому сервису, да так что поисковики стали думать что мой сайт не работает), пришлось искать новое решение. Единственное нормальное решение из бесплатных на данный момент это geoplugin.com
Для Drupal есть специальный модуль для него https://www.drupal.org/project/geoplugin, но пока что до выхода нового релиза приходится его патчить https://www.drupal.org/node/2452375
Сейчас на ipgeobase.ru базы в другом формате. Как их обновлять?
А как с использованием этого модуля добавить блок выбора города?
Поставил модуль, но мой ip не определяется. На http://ipgeobase.ru формат базы изменился, хотя я посмотрел оба формата, новую базу несложно сконвертировать в нужный формат.
у меня вроде работает. Определяется правильно не всегда, но это и не новость, кажется Например, если с мобильного Билайн в Краснодаре, то частенько то Москва, то Ростов-на-Дону выскакивает, но так и в Яндексе случается. Видимо, ip оператор присваивает в зависимости от канала, а канал в зависимости от нагрузок сам перенаправляет.
Да я разобрался, почему не определялся IP. У меня NGINX + Apache, нужно было в settings.php добавить запись:
<?php// Требуется если сайт находится за nginx
// Tell Drupal that we are behind a reverse proxy server
$conf['reverse_proxy'] = TRUE;
// List of trusted IPs (IP numbers of our reverse proxies)
$conf['reverse_proxy_addresses'] = array(
'127.0.0.1',
'IP сервера',
);
?>
Еще я пишу скриптик, преобразующий базу IP из нового формата в формат требуемый для этого модуля.
Будет готово, выложу сюда.
Переконвертировал базу из нового формата в требуемый для модуля. Может кому пригодится.
Обновленная база
Конвертер написал на Python, если нужно могу тоже выложить, но он сырой, т.к. делался под разовую задачу.
Спасибо за обновленную базу. Пригодилась.
Не за что.