2010-09-14 13 views
5

He descargado la última versión de OpenX 2.8.6 y estoy tratando de configurar la orientación geográfica, pero no funciona. He habilitado la GeoTargeting en el panel de administración (Configuración -> Configuración global -> Tipo de módulo de orientación geográfica -> mente de OpenX Max (archivo plano)). Leí en la documentación de OpenX que no es necesario poner ninguna ruta a la base de datos en la configuración del complemento, así que lo intenté sin ella. Configuro las opciones de entrega del banner de prueba para que se muestren solo en Serbia. Estoy reafirmando la página que muestra banners, pero este banner nunca se muestra.Problema de OpenX y geotargeting

Pensé que tal vez el problema está en la base de datos anterior y que mi dirección IP no es reconocida, así que descargué la última base de datos (archivo .dat) de MaxMind (versión lite de la base de datos del país) y puse la ruta en la configuración del complemento, pero todavía no funciona.

¿Alguien me puede ayudar a resolver este problema?

Respuesta

5

Tuve el mismo problema. Parece que OpenX desde la versión 2.8.x está usando su propio lector GeoP-Database basado en php (por ejemplo, la opción "flatfile" en la configuración) en lugar de usar un módulo geoip, que no parece funcionar con GeoIP.dat

para resolver este problema hice lo siguiente:

1) abierta plugins/geoTargeting/oxMaxMindGeoIP/oxMaxMindGeoIP.delivery.php

2) búsqueda de:

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) Agregar más abajo:

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

4) guardar & hecho

Va a encontrar posibles valores de retorno en la cabecera de la función:

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

leer su módulo-doc (de mod_geoip) cómo obtener los datos geográficos del IP actual (o dado). En mi ejemplo anterior, estoy usando lighttpd 1.5 + mod_geoip (módulo no oficial). Pero esta solución también debería funcionar con apache_note/pecl-geoip/mod_geoip env ...

Ah, y por cierto. por supuesto, es mucho más rápido confiar en mod_geoip que almacena en caché el db en la memoria, que hacerlo todo a través de php en cada solicitud (como lo hace openx).