通过了解用户Drupal 7的ip,将用户重定向到区域语言站点版本

时间:2013-02-28 10:02:40

标签: drupal redirect ip drupal-modules

我们基本上正在开发一个支持多种语言的Drupal 7站点。 用户应根据其IP重定向到区域翻译页面。

我尝试过使用以下模块,但它们没有帮助实现我想要的目标。

如何根据用户的身份将用户重定向到特定页面?

1 个答案:

答案 0 :(得分:1)

我已添加了相同的模块...只需添加代码。只需很少的修改,就可以为任何语言和选项配置它。

  1. 我使用的是来自http://ipinfodb.com/的API。
  2. ip2locationlite.class.php - >文件可以从此链接“http://ipinfodb.com/ip_location_api.php”下载。该文件由一个非常简单的类组成,仅用于调用http://ipinfodb.com/提供的web服务,可以通过使用自己的类与file_get_contents来避免。

  3. 我只用中文。

  4. / **作者:Sunny Jhunjhunwala(sunny.jhunjhunwala@sourcen.com)  * @file - 该文件基本上使用ipinfodb提供的php api来获取用户的国家/地区  * /

    / **  *实现hook_init()。  *仅在第一次检查用户是否来自中国,如果是,则将用户重定向到中文版本的网站。  * / function dw_ip2location_init(){

    if(!(array_key_exists('visited',$ _COOKIE))&& empty($ GLOBALS ['user'] - > uid)){     //设置cookie以检查用户是新用户还是现有用户。     setcookie(“visit”,1,time()+(10 * 365 * 24 * 60 * 60));     include_once('ip2locationlite.class.php');     $ ipLite = new ip2location_lite;     $ ipLite-> setkey的( 'a00740f71ae6ed8db250cb4c3a8ecdac672b5eae4d2a28c06284aa5461d0636d');     // @TODO:移动到生产时删除下面的if-else。     if(isset($ _ GET ['ip2location'])){       $ locations = $ ipLite-> getCountry($ _ GET ['ip2location']);     } else {       $ locations = $ ipLite-> getCountry($ _ SERVER ['REMOTE_ADDR']);     }     if(!empty($ locations)&& is_array($ locations)){       //检查用户是否来自中国并重定向。       if($ locations ['countryCode'] =='CN'|| $ locations ['countryName'] =='china'){
            $ path = $ _GET ['q'];
            $ translations = i18n_get_path_translations($ path);
            $ language = i18n_language_interface();
            if($ language-> prefix!='cn'){           global $ base_url;           if(!drupal_is_front_page()&& array_key_exists('zh-hans',$ translations)){             drupal_goto($ base_url。'/ cn /'。$ translations ['zh-hans'] ['href'],array('absolute'=> true));           }           其他{             drupal_goto($ base_url。'/ cn /',array('absolute'=> true));           }
            }       }     }   } }