2010-09-14 13 views
5

En son OpenX 2.8.6 sürümünü indirdim ve geotargeting'i kurmaya çalışıyorum, ancak çalışmıyor. Yönetim panelinde geoTargeting'i etkinleştirdim (Yapılandırma -> Genel ayarlar -> Coğrafi hedefleme modülü türü -> OpenX Max mind (düz dosya)). OpenX'in belgelerinde eklenti ayarlarında veritabanına herhangi bir yol koymanın gerekli olmadığını, bu yüzden denemeyi denedim. Yalnızca Sırbistan'da gösterilecek test banner'ının yayınlanma seçeneklerini ayarlıyorum. Afiş görüntüleyen sayfayı yeniden yazıyordum, ancak bu afiş asla gösterilmiyor.OpenX ve coğrafi hedefleme sorunu

Belki de sorunun eski veritabanında olduğunu ve IP adresimin tanınmadığını düşündüm, bu yüzden en son bir veritabanını (.dat dosyası) MaxMind'den (Ülke veritabanının lite sürümü) indirdim ve ayarları yoluna koydum eklentinin, ancak hala çalışmıyor.

Bu sorunu nasıl çözebilirim?

cevap

5

Aynı problem vardı. OpenX, sürüm 2.8.x'ten beri kendi php tabanlı GeoIP-Veritabanı okuyucusunu (örn. Ayarlar altında "flatfile" seçeneği) bir geoip modülü kullanmak yerine kullanıyor. Bu, geçerli GeoIP.dat

ile çalışmıyor gibi görünüyor.

1) açık eklentileri/Coğrafi hedefleme/oxMaxMindGeoIP/oxMaxMindGeoIP.delivery.php

2) arama için:

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(); 

aşağıdaki yaptım Bu sorunu çözmek için

3) Aşağıdaki ekleyin:

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

4) &

yapılan tasarruf

Sen fonksiyon başlığında olası dönüş değerlerini bulacaksınız:

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

sizin modül-doc oku (mod_geoip'in) mevcut (veya verilen) IP'den coğrafi verileri nasıl alırsınız. Yukarıdaki örneğimde, lighttpd 1.5 + mod_geoip (gayri resmi modül) kullanıyorum. Ancak bu düzeltme aynı zamanda apache_note/pecl-geoip/mod_geoip env ...

Oh ve btw. elbette bellekte db'yi önbelleğe alan mod_geoip'e çok daha hızlı bir şekilde güveniyor, her istekte php üzerinden yapıyor (openx gibi).