我有以下Magento多店铺设置:
所有人都在使用
作为SSL域。购物车和一切工作正常,除了语言回归英语!
如果我在german.domain.com(商店语言是德语),我点击结帐,商店将被定向到secure.domain.com。我在german.domain.com上添加的产品已经存在,但语言不再是德语。它回归英语!它不处理cookie域设置,否则将不会共享购物车中的产品。
有没有人有想法或已经解决了这个问题。我认为必须有一个智能编码来解决这个问题。
感谢名单
解决方案:Franklin P Strube提供了正确的解决方案,但我在index.php中用PHP硬编码:
$mageRunCode = isset($_SERVER['MAGE_RUN_CODE']) ? $_SERVER['MAGE_RUN_CODE'] : '';
$mageRunType = isset($_SERVER['MAGE_RUN_TYPE']) ? $_SERVER['MAGE_RUN_TYPE'] : 'store';
if($_SERVER['SERVER_NAME'] != 'secure.domain.com' && isset($_SERVER['HTTP_REFERER'])) {
$url = parse_url($_SERVER['HTTP_REFERER']);
if($url['host'] == 'german.domain.com') {
setcookie('language', 'german', 0, '/', '.domain.com');
} elseif($url['host'] == 'french.domain.com') {
setcookie('language', 'french', 0, '/', '.domain.com');
} else {
setcookie('language', 'english', 0, '/', '.domain.com');
}
}
if($_SERVER['SERVER_NAME'] == 'secure.domain.com') {
if(isset($_COOKIE['language'])) {
$mageRunCode = $_COOKIE['language'];
}
}
Mage::run($mageRunCode, $mageRunType);
答案 0 :(得分:2)
当您进行多店铺设置时,通常会有像SetEnvIf Host german.domain.com MAGE_RUN_CODE=domain_com_de
这样的.htaccess规则。您在多店的.htaccess文件中有什么用?
我的猜测是Magento正在使用英语,因为默认网站/商店会在您访问secure.domain.com时随时加载。您可以通过在文件的最后一行({1}}上方添加Mage::log("$mageRunCode $mageRunType");
来验证这一点。确保在系统中启用了日志记录>配置>开发人员区域,然后检查magento / var / system.log中记录的内容。以下解决方案可以帮助您实现您想要的目标。
解决方案#1 在“系统>配置>常规>网络”中更改“将商店代码添加到网址”设置可能会解决此问题,但可能会导致网页混乱
解决方案#2 我不记得Magento如何处理语言切换(可能有一个神奇的查询字符串var为你做这个),但如果你想以编程方式执行此操作,可以通过cookies和ENV vars在htaccess中完成所有工作:
Mage::run($mageRunCode, $mageRunType);
答案 1 :(得分:-1)
你能告诉我你如何实现
我有以下Magento多店铺设置:
german.domain.com
english.domain.com
french.domain.com
所有人都在使用
secure.domain.com
作为SSL域。
我们在根目录中创建了多个网站,并通过相应的代码在admin中创建网站。
但是当我们去买一个产品时,我们得到一个页面找不到错误...