1

我有以下 Magento 多商店设置:

  • German.domain.com
  • 英文域名.com
  • 法语.domain.com

所有人都在使用

  • 安全域名.com

作为 SSL 域。购物车和一切正常,除了语言回落到英语!

如果我在 German.domain.com(商店语言为德语)上并单击结帐,商店将被定向到 secure.domain.com。我在 German.domain.com 上添加的产品存在,但语言不再是德语。它又回到了英语!它不处理 cookie 域设置,否则购物车中的产品将不会被共享。

有没有人有想法或已经解决了这个问题。我认为必须有一个智能编码来解决这个问题。

谢谢

解决方案:富兰克林 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);
4

2 回答 2

2

当您进行多商店设置时,您通常具有 .htaccess 规则,例如SetEnvIf Host german.domain.com MAGE_RUN_CODE=domain_com_de. 您的 .htaccess 文件中有哪些用于多商店的内容?

我的猜测是 Magento 使用的是英语,因为在您访问 secure.domain.com 的任何时候都会加载默认网站/商店。Mage::log("$mageRunCode $mageRunType");您可以通过在它正在执行的文件的最后一行的上方添加来验证这一点Mage::run($mageRunCode, $mageRunType);。确保在 System > Configuration > Developer 区域中启用了日志记录,然后检查 magento/var/system.log 中记录的内容。下面的解决方案可以帮助您实现您想要的。

解决方案 #1更改“系统 > 配置 > 常规 > Web”中的“将商店代码添加到 URL”设置可能会解决此问题,但可能会导致 URL 混乱。

解决方案 #2我不记得 Magento 是如何处理语言切换的(可能有一个神奇的查询字符串 var 可以为您执行此操作),但如果您想以编程方式执行此操作,您可以通过 cookie 和 ENV 在 htaccess 中完成所有操作变量:

# If they are coming from german domain, set the language cookie = german
RewriteCond %{HTTP_REFERER} german.domain.com
RewriteRule (.*) $1 [CO=language:german]

RewriteCond %{HTTP_REFERER} french.domain.com
RewriteRule (.*) $1 [CO=language:french]

# Multistore routing (you probably already have this somewhere)
SetEnvIf Host german.domain.com MAGE_RUN_CODE=german
SetEnvIf Host french.domain.com MAGE_RUN_CODE=french

# Cookie language detection (using mod_rewrite, set the mage env)
RewriteCond %{HTTP_COOKIE} language=german
RewriteRule (.*) $1 [E=MAGE_RUN_CODE:german]

RewriteCond %{HTTP_COOKIE} language=french
RewriteRule (.*) $1 [E=MAGE_RUN_CODE:french]
于 2012-11-22T16:04:14.757 回答
-1

你能告诉我你是如何实现的吗

我有以下 Magento 多商店设置:

german.domain.com
english.domain.com
french.domain.com

所有人都在使用

secure.domain.com

作为 SSL 域。

我们通过根目录中的文件夹创建了多个网站,并通过相应的代码在管理员中创建网站。

但是当我们去结帐产品时,我们会收到一个找不到页面的错误...

于 2012-11-28T07:06:51.060 回答