2010-09-14 6 views
5

Я загрузил последнюю версию OpenX 2.8.6, и я пытаюсь настроить геотаргетинг, но он не работает. Я включил геотаргетинг на панели администрирования (Конфигурация -> Глобальные настройки -> Тип модуля геотаргетинга -> OpenX Max mind (плоский файл)). Я прочитал в документации OpenX, что нет необходимости вводить какой-либо путь к базе данных в настройках плагина, поэтому я пробовал без нее. Я устанавливаю параметры доставки тестового баннера, который будет показан только в Сербии. Я обновляю страницу, на которой отображаются баннеры, но этот баннер никогда не отображается.Проблема OpenX и геотаргетинга

Я думал, что может быть проблема в старой базе данных и что мой IP-адрес не распознан, поэтому я загрузил последнюю базу данных (.dat-файл) из MaxMind (облегченная версия базы данных Country) и поместил путь в настройки плагина, но он все равно не работает.

Может ли кто-нибудь помочь мне, как решить эту проблему?

ответ

5

У меня была та же проблема. Похоже, что OpenX, начиная с версии 2.8.x, использует собственный читатель GeoIP-базы данных на базе php (например, параметр «flatfile» в настройках) вместо использования модуля геоинформации, который, похоже, не работает с текущим GeoIP.dat

Чтобы решить эту проблему, я сделал следующее:

1) открытые плагины/ГЕОТАРГЕТИНГ/oxMaxMindGeoIP/oxMaxMindGeoIP.delivery.php

2) поиска для:

if (isset($GLOBALS['_MAX']['GEO_IP'])) { 
     $ip = $GLOBALS['_MAX']['GEO_IP']; 
     OX_Delivery_logMessage('['.$ip.'] : ip from cookie. Plugin_geoTargeting_oxMaxMindGeoIP_oxMaxMindGeoIP_Delivery_getGeoInfo', 7); 
    } else { 
     $ip = $_SERVER['REMOTE_ADDR']; 
     OX_Delivery_logMessage('['.$ip.'] : ip from remote addr. Plugin_geoTargeting_oxMaxMindGeoIP_oxMaxMindGeoIP_Delivery_getGeoInfo', 7); 
    } 
    $aGeoConf = (is_array($conf['oxMaxMindGeoIP'])) ? $conf['oxMaxMindGeoIP'] : array(); 

3) вставить ниже:

$ret = array(
    "country_code" => $_SERVER['GEOIP_COUNTRY_CODE'] 
); 
return $ret; 

4) сохранить & сделано

Вы найдете возможные возвращаемые значения в заголовке функции:

* @return array An array(
*     'country_code', 
*     'region', 
*     'city', 
*     'postal_code', 
*     'latitude', 
*     'longitude', 
*     'dma_code', 
*     'area_code', 
*     'organisation', 
*     'isp', 
*     'netspeed' 
*    ); 
*/ 

Читать свой модуль-документ (mod_geoip), как получить геоданные от текущего (или заданного) IP. В моем примере выше я использую lighttpd 1.5 + mod_geoip (неофициальный модуль). Но это исправление должно также работать с apache_note/pecl-geoip/mod_geoip env ...

Oh and btw. его, конечно, намного быстрее, полагаясь на mod_geoip, который кэширует db в памяти, чем делать все это через php для каждого запроса (как это делает openx).