2010-09-14 6 views
5

Ich habe die neueste Version von OpenX 2.8.6 heruntergeladen und ich versuche, Geotargeting einzurichten, aber es funktioniert nicht. Ich habe geoTargeting im Administrationsbereich aktiviert (Konfiguration -> Globale Einstellungen -> Geotargeting Modultyp -> OpenX Max mind (flache Datei)). Ich habe in der Dokumentation von OpenX gelesen, dass es nicht nötig ist, einen Pfad zur Datenbank in Plugin-Einstellungen zu setzen, also habe ich es ohne versucht. Ich habe Lieferoptionen für Testbanner eingerichtet, die nur in Serbien angezeigt werden. Ich füge die Seite hinzu, die Banner anzeigt, aber dieses Banner wird nie angezeigt.OpenX- und Geotargeting-Problem

Ich dachte, dass vielleicht das Problem in der alten Datenbank ist und dass meine IP-Adresse nicht erkannt wird, so habe ich heruntergeladen die neueste einer Datenbank (DAT-Datei) von MaxMind (Lite-Version von Land-Datenbank) und den Pfad in den Einstellungen setzen des Plugins, aber es funktioniert immer noch nicht.

Kann mir jemand helfen, dieses Problem zu lösen?

Antwort

5

Ich hatte das gleiche Problem. Es scheint, dass OpenX seit Version 2.8.x einen eigenen php-basierten GeoIP-Database Reader verwendet (zB die Option "flatfile" unter Einstellungen) anstatt ein GeoIP-Modul zu verwenden - das scheint nicht mit der aktuellen GeoIP.dat

zu funktionieren

Um dieses Problem zu lösen, ich folgendes getan:

1) offen plugins/Geo-Targeting/oxMaxMindGeoIP/oxMaxMindGeoIP.delivery.php

2) Suche nach:

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) unten einfügen:

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

4) speichern & getan

Sie mögliche Rückgabewerte im Funktionskopf finden:

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

Lesen Sie Ihre Modul-doc (von mod_geoip) wie man die Geodaten von der aktuellen (oder gegebenen) IP bekommt. In meinem obigen Beispiel benutze ich lighttpd 1.5 + mod_geoip (inoffizielles Modul). Aber dieser Fix sollte auch mit apache_note/pecl-geoip/mod_geoip env ... funktionieren

Oh und btw. es ist natürlich viel schneller auf mod_geoip, die die db im speicher zwischengespeichert, als alles über php bei jeder anfrage (wie openx macht es).