0

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

我曾尝试使用以下模块,但它们无助于实现我想要的。

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

4

1 回答 1

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. 我只用了中文。

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

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

if (!(array_key_exists('visited', $_COOKIE)) && empty($GLOBALS['user']->uid)) { // 设置 cookie 以检查用户是新用户还是现有用户。setcookie("已访问", 1, time() + (10 * 365 * 24 * 60 * 60)); include_once ('ip2locationlite.class.php'); $ipLite = 新的 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)) { // 检查用户是否来自中国并重定向。
$path = $_GET['q'];
$translations = i18n_get_path_translations($path);
$language = i18n_language_interface();
if($language->prefix != 'cn' ) { 全局 $base_url; if(!drupal_is_front_page() && array_key_exists('zh-hans', $translations)) { drupal_goto( $base_url . '/cn/' . $translations['zh-hans']['href'], array('absolute ' => 真));} else { drupal_goto( $base_url . '/cn/', array('absolute' => true)); }
} } } } }

于 2013-04-17T09:35:48.997 回答