Расскажу про геотаргетинг и как его встроить в приложения на Zend Framework 2. Геотаргетинг - это определение местоположения пользователя на основе его персональных данных, ip д.р. способы. В статье я буду рассказывать про геотаргетинг с использованием ip адреса и сервиса ipGeoBase - http://ipgeobase.ru/.
Что нужно для геотаргетинга.
- Базы данных с ipGeoBase(ipGeoBase).
- Zend FrameWork 2
- Готовый модуль Zend Framework для работы, например (https://github.com/akrabat/zf2-tutorial)
Основную работу при определении местоположения пользователя будет выполнять класс "Geo". Его инициализация внутри действия контроллёра выглядит следующим образом:
Этот код нужно расположить внутри нужного действия Вашего контроллёра, например:
Класс Geo будет плагином Zend Frmework 2, для того чтобы к нему обращаться как плагину, его необходимо подключить в файле module.config.php для модуля Zend Framework, я делаю это следующим образом, подключая его вместе с другими модулями в моём приложении:
Подключив плагин в конфигурационном файле, его необходимо правильно разместить по адресу: "Application\Controller\Plugin\Geo\Geo.php" - соответствие шаблону "Application\Controller\Plugin\Geo\Geo". Весь пример плагина Geo, подробное объяснение указанно после этого листинга.
Основные функции объясняются подробно в комментариях, однако подробно объясню отдельно функцию "getpgAdapter()". Функция создаёт экземпляр класса подключения к базе данных (Adapter), создаётся он на основе конфигурационных данных содержащихся в файлах, как правило это файл "config\autoload\global.php", согласно документации:
"It is important to know that by using this style of adapter creation, the Adapter will attempt to create any dependencies that were not explicitly provided. A Driver object will be created from the configuration array provided in the constructor. A Platform object will be created based off the type of Driver object that was instantiated. And lastly, a default ResultSet object is created and utilized. Any of these objects can be injected, to do this, see the next section."
Ещё хотелось объяснить интересную функцию "get_geobase_data", по сути это модифицирлваннфый вариант скрипта скаченного с сайта ipgeobase, за исключением того, что мы помещаем данные в базу (о чём будет рассказано после следующего листинга), а после этого используем их для наших целей, согласитесь, поиск по базе данных с индексированным столбцами намного быстрее и удобнее чем работа с xlm данными, хотя скрипт написан таким образом, что когда в базе не находится нужный регион, происходит обращение к xml файлу с официального сайта - ipgeobase, с надеждой найти данные там.
Как я и обещал, ниже приведён файл который может использоваться для обновления данных содержащихся в базе, поместите этот файл в директорию, скрытыю от публичного доступа.
Config.php
После этого осталось создать запись в файле crontab "05 04 * * * /usr/bin/php /var/www/jquery/data/parser/index.php >/dev/null 2>&1"
Полученные данные в нашем действии, о котором мы писали ранее (indexAction), будут содержаться в переменных $region и country. В примере выполняются два запроса, в действительности хватает одного запроса через функцию get_value('', false), которая будет содержать массив данных.
93 просмотра
Взаимосвязанные материалы
Расскажу про геотаргетинг и как его встроить в приложения на Zend Framework 2. Геотаргетинг - это определение местоположения пользователя на основе его персональных данных, ip д.р. способы.
читать...Для мультиязычных сайтов необходима авторизация из социальных сетей, так как по статистике, более 50 % пользователей моих сайтов зарегистрированы из социальных сетей, а именно
читать...В Zend Framework 2 не так просто привязать к определённому макету определенный модуль.
читать...