2010-09-14 31 views
5

Tôi đã tải xuống phiên bản OpenX 2.8.6 mới nhất và tôi đang cố gắng thiết lập nhắm mục tiêu theo địa lý, nhưng nó không hoạt động. Tôi đã bật geoTargeting trong bảng điều khiển quản trị (Cấu hình -> Cài đặt chung -> Loại mô-đun nhắm mục tiêu địa lý -> OpenX Max mind (tệp phẳng)). Tôi đọc trong tài liệu của OpenX rằng nó không cần thiết để đặt bất kỳ đường dẫn đến cơ sở dữ liệu trong cài đặt plugin, vì vậy tôi đã thử mà không cần. Tôi thiết lập tùy chọn phân phối biểu ngữ thử nghiệm để chỉ hiển thị ở Serbia. Tôi đang nhấn mạnh trang hiển thị các biểu ngữ, nhưng biểu ngữ này không bao giờ hiển thị.OpenX và vấn đề nhắm mục tiêu theo địa lý

Tôi nghĩ rằng có thể sự cố là trong cơ sở dữ liệu cũ và địa chỉ IP của tôi không được nhận dạng, vì vậy tôi đã tải xuống cơ sở dữ liệu mới nhất (tệp .dat) từ MaxMind (phiên bản lite của Cơ sở dữ liệu quốc gia) và đặt đường dẫn trong cài đặt của plugin, nhưng nó vẫn không hoạt động.

Có ai có thể giúp tôi giải quyết vấn đề này không?

Trả lời

5

Tôi gặp sự cố tương tự. Có vẻ như OpenX kể từ phiên bản 2.8.x đang sử dụng trình đọc CSDL dựa trên php của riêng nó (ví dụ như tùy chọn "flatfile" trong cài đặt) thay vì sử dụng mô-đun geoip - dường như không hoạt động với GeoIP.dat

hiện tại

để giải quyết vấn đề này, tôi đã làm như sau:

1) mở plugins/Geotargeting/oxMaxMindGeoIP/oxMaxMindGeoIP.delivery.php

2) tìm kiếm cho:

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) chèn dưới đây:

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

4) lưu & làm

Bạn sẽ tìm thấy giá trị trả về có thể trong tiêu đề chức năng:

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

Đọc module-doc của bạn (của mod_geoip) cách lấy dữ liệu địa lý từ IP hiện tại (hoặc đã cho). Trong ví dụ trên tôi đang sử dụng lighttpd 1.5 + mod_geoip (module không chính thức). Nhưng bản sửa lỗi này cũng sẽ hoạt động với apache_note/pecl-geoip/mod_geoip env ...

Oh và btw. tất nhiên nó dựa vào mod_geoip nhanh hơn, lưu trữ db trong bộ nhớ, hơn là làm tất cả thông qua php trên mọi yêu cầu (như openx hiện nó).

Các vấn đề liên quan