题
我想配置Magento网站,以便能够识别用户的默认语言和位置,并以该语言和适当的本地化显示站点。
例如:
来自俄罗斯语言的用户违约将以卢布作为默认货币和价格直接进入俄罗斯语言网站。
这可能吗?如果是这样?
解决方案
Geoip和商店视图将帮助您解决此问题。
地理您可以使用类似的提供商 maxmind 对于您的GeoIP数据库(或将其作为Web服务器模块加载,将其添加到标题中)。
基于IP地址,您可以将客户重定向到正确的商店视图(检查商店视图切换器生成的链接。
存储视图
俄罗斯应该是商店的视野。检查商店视图切换器,以查看您需要为客户使用的链接。
重定向后,您可以设置一个cookie将客户与商店视图相关联。
其他提示
有一个Magento Geoip扩展名(由我写),该扩展名下载最新的MaxMind数据文件并定期对其进行更新。
我建议挂上 controller_front_init_before
事件。您可以使用以下代码检查获取ISO 3166-1访问者国家代码,然后将他重定向到CORESPONDENT商店视图,如果您有:
$geoIP = Mage::getSingleton('geoip/country');
$code = $geoIP->getCountry();
/*
* Check if store view for this country/language exists and it is not a current store view.
* If so do a redirect.
* You can also take a language from user agent into consideration.
*/
可以找到有关使用此扩展的详细文章 这里.
要看的另一件事是Geo IP。
几行代码将为您提供用户乡村代码,您可以根据此切换。
但是请注意,您会 有问题 如果您是任何基于重定向的代码 将同一商店与企业版和全页缓存一起使用,因为首页被列出了.
看一眼 http://www.thefutureoftheweb.com/blog/use-accept-language-header如果可以编程。您可以在 index.php
加载适合该语言的商店视图。
另一个选择是使用PHP auto_prepend 配置。这将导致PHP处理的所有脚本运行脚本 前 实际请求的脚本运行,但是 后 .htaccess(如果您正在使用)。
这种方法与其他一些建议(例如使用MaxMind用于GEO位置数据和特定区域的商店视图)相结合,可能会导致一种相当干净的方法。
如果您正在运行Magento> = 1.4的版本,则可以通过设置$ _Server ['Mage_run_code']值来配置默认存储代码。
在.htaccess文件或Apache的配置中添加以下内容:
php_value auto_prepend_file /var/www/mystore/path/to/script.php
在你的 script.php
执行任何必要的业务逻辑并设置适当的商店代码:
<?php
if (get_ip_location($_SERVER['REMOTE_ADDR']) == 'uk') {
$_SERVER['MAGE_RUN_CODE'] = 'store_code_uk';
} else {
$_SERVER['MAGE_RUN_CODE'] = 'store_code_us';
}
要注意的一件事是,这将适用 全部 请求的PHP文件,因此您需要牢记这一点。