2010-09-14 29 views
5

J'ai téléchargé la dernière version d'OpenX 2.8.6 et j'essaie de configurer le ciblage géographique, mais cela ne fonctionne pas. J'ai activé le géo-ciblage dans le panneau d'administration (Configuration -> Paramètres globaux -> Type de module de géolocalisation -> Esprit OpenX Max (fichier plat)). J'ai lu dans la documentation d'OpenX qu'il n'est pas nécessaire de mettre un chemin vers la base de données dans les paramètres du plugin, donc j'ai essayé sans. Je configure les options de livraison de la bannière de test à afficher uniquement en Serbie. Je suis en train de refuter la page qui affiche des bannières, mais cette bannière ne s'affiche jamais. Je pensais que peut-être le problème est dans l'ancienne base de données et que mon adresse IP n'est pas reconnue, j'ai donc téléchargé la dernière base de données (fichier .dat) de MaxMind (version allégée de la base de données Country) et mettre le chemin dans les paramètres du plugin, mais cela ne fonctionne toujours pas.Problème OpenX et de ciblage géographique

Quelqu'un peut-il m'aider à résoudre ce problème?

Répondre

5

J'ai eu le même problème. Il semble qu'OpenX depuis la version 2.8.x utilise son propre lecteur de base de données GeoIP basé sur php (par exemple l'option "flatfile" dans les paramètres) au lieu d'utiliser un module geoip - qui ne semble pas fonctionner avec GeoIP.dat

pour résoudre ce problème, je l'ai fait ce qui suit:

1) ouvert plugins/GÉOCIBLAGE/oxMaxMindGeoIP/oxMaxMindGeoIP.delivery.php

2) recherche pour:

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) insérer ci-dessous:

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

4) sauver & fait

Vous trouverez les valeurs possibles de retour dans l'en-tête de la fonction:

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

Lire votre module-doc (de mod_geoip) comment obtenir les géo-données de l'IP actuelle (ou donnée). Dans mon exemple ci-dessus j'utilise lighttpd 1.5 + mod_geoip (module non officiel). Mais ce correctif devrait également fonctionner avec apache_note/pecl-geoip/mod_geoip env ...

Oh et btw. c'est bien sûr beaucoup plus rapide en se basant sur mod_geoip qui met en mémoire cache le db en mémoire, que de tout faire via php à chaque requête (comme openx le fait).