2010-09-14 11 views
5

Pobrałem najnowszą wersję OpenX 2.8.6 i próbuję skonfigurować geotargetowanie, ale nie działa. Włączyłem geoTargeting w panelu administracyjnym (Konfiguracja -> Ustawienia globalne -> Typ modułu geotargetowania -> Umysł OpenX Max (plik płaski)). Czytałem w dokumentacji OpenX, że nie ma potrzeby umieszczania jakiejkolwiek ścieżki do bazy danych w ustawieniach wtyczki, więc próbowałem bez. Ustawiam opcje dostawy banera testowego, które będą wyświetlane tylko w Serbii. Uporządkuję stronę wyświetlającą banery, ale baner ten nigdy się nie wyświetla.Problem z OpenX i geotargetingiem

Pomyślałem, że być może problem jest w starej bazie danych i mój adres IP nie jest rozpoznawany, dlatego pobrałem najnowszą bazę danych (plik .dat) z MaxMind (wersja Lite bazy danych kraju) i ustaw ścieżkę w ustawieniach wtyczki, ale nadal nie działa.

Czy ktoś może mi pomóc rozwiązać ten problem?

Odpowiedz

5

Miałem ten sam problem. Wydaje się, że OpenX od wersji 2.8.x używa własnego czytnika GeoIP-Database (np. Opcja "plik płaski" w ustawieniach) zamiast używać modułu geoip - który nie działa z bieżącym GeoIP.dat

Aby rozwiązać ten problem, zrobiłem następujący:

1) Otwórz plugins/Geotargeting/oxMaxMindGeoIP/oxMaxMindGeoIP.delivery.php

2) Szukane:

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) wstawić poniżej:

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

4) zapisać & zrobić

Znajdziesz możliwych wartości zwracanych w nagłówku funkcji:

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

Czytaj module-doc (z mod_geoip), jak uzyskać dane geolokalizacyjne z bieżącego (lub danego) adresu IP. W powyższym przykładzie używam lighttpd 1.5 + mod_geoip (nieoficjalny moduł). Ale ta poprawka powinna również działać z apache_note/pecl-geoip/mod_geoip env ...

Oh and btw. jego oczywiście znacznie szybciej polegać na mod_geoip, który buforuje db w pamięci, niż robi to wszystko za pomocą php na każde żądanie (tak jak robi to openx).