1

次の Magento マルチストア設定があります。

  • german.domain.com
  • English.domain.com
  • フランス語.domain.com

みんな使ってる

  • secure.domain.com

SSL ドメインとして。言語が英語に戻ることを除いて、カートとすべてが正常に機能します!

german.domain.com (ストアの言語はドイツ語) を使用していて、チェックアウトをクリックすると、ショップは secure.domain.com に移動します。german.domain.com に追加した製品は存在しますが、言語はドイツ語ではなくなりました。英語に戻ります!Cookie ドメインの設定は処理しません。そうしないと、カート内の製品が共有されません。

誰かがアイデアを持っているか、この問題を解決しましたか? これを解決するには、インテリジェントなコーディングが必要だと思います。

ありがとう

解決策: Franklin P Strube は正しい解決策を提供しましたが、私はそれを PHP の index.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 ファイルには何がありますか?

私の推測では、secure.domain.com にアクセスするたびにデフォルトの Web サイト / ストアがロードされるため、Magento は英語を使用していると思われます。これを確認するMage::log("$mageRunCode $mageRunType");には、実行中のファイルの最後の行のすぐ上にMage::run($mageRunCode, $mageRunType);. [システム] > [構成] > [開発者] 領域でログが有効になっていることを確認してから、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 ドメインとして。

ルート ディレクトリのフォルダーを介して複数の Web サイトを作成し、対応するコードで管理者に Web サイトを作成しました。

しかし、製品のチェックアウトに行くと、ページが見つからないというエラーが表示されます...

于 2012-11-28T07:06:51.060 に答える