共有カートでマルチストアをセットアップしようとしています。ただし、ユーザーログインが機能しない場合があります。
Store Switcher
罰金を動作しますが、フロントエンドのUser Login
2番目と3番目には、Store
クリックして私を必要とSign In
ログインにボタンを2回。
私はこれらのセットアップでマルチストアをセットアップしました:
マルチドメイン(仮想ホスト)
使用していWebsite
ます。サイトには3つありStores
ます。ドメイン名は、1つの共通の基本ドメインを共有します。追加のストアはサブドメインを使用します。
デフォルトのベースドメインとしてmagento2.comを作成しました。
2番目のストアとしてstore2.magento2.comを作成しました。
3番目のストアとしてstore3.magento2.comを作成しました。
ルートカテゴリとテスト製品
Store2ルートカテゴリとStore3ルートカテゴリを作成しました。また、各ルートカテゴリの下にサブカテゴリを作成しました。
各サブカテゴリに1つのテスト製品を追加しました。
ストアとビュー
メインWebサイトストアとデフォルトストアビューでは何も変更していません。
2番目のストア用にStore2とStore View 2を作成しました。
3番目のストア用にStore3とStore View 3を作成しました。
Store2については、Store2をとして設定しName
、Store2ルートカテゴリをとして選択しましたRoot Category
。
以下のためにストアビュー2、私が選択したStore2をとしてStore
使用し、ストアビュー2としてName
、入力されたstore2を通りStore Code
。
3番目にStore
、Store3をとして設定しName
、Store3ルートカテゴリをとして選択しましたRoot Category
。
Store View 3については、Store3 as を選択しStore
、Store View 3 asを使用してName
、store3 as と入力しましたStore Code
。
URLとCookieの設定
Configuration
画面が下の5つの選択肢を示しStore View
、ドロップダウン:
Default Config
Main Website
Default Store View
- ストアビュー2
- ストアビュー3
Default Store View
、ストアビュー2、ストアビュー3の URLとCookieの設定を変更しました 。
Default Config
およびのURLまたはCookie設定を変更しませんでしたMain Website
。
のためにDefault Store View
、私は変更しましたCookie Path
。
ストアビュー2については、を変更Base URL
しましたCookie Path
。
ストアビュー3について、私は変更Base URL
しましたCookie Path
。
アカウント共有
共有ユーザーアカウントと複数の店舗間でのショッピングカートに、私は変更Share Customer Accounts
に「パーウェブサイト」からグローバルの下でDefault Config
。
.htaccessの変更
これらの行を.htaccess
プロジェクトルートディレクトリのファイルの先頭に追加しました。
#Multi store setting
SetEnvIf Host magento2.com MAGE_RUN_CODE=default
SetEnvIf Host magento2.com MAGE_RUN_TYPE=store
SetEnvIf Host ^magento2.com MAGE_RUN_CODE=default
SetEnvIf Host ^magento2.com MAGE_RUN_TYPE=store
SetEnvIf Host store2.magento2.com MAGE_RUN_CODE=store2
SetEnvIf Host store2.magento2.com MAGE_RUN_TYPE=store
SetEnvIf Host ^store2.magento2.com MAGE_RUN_CODE=store2
SetEnvIf Host ^store2.magento2.com MAGE_RUN_TYPE=store
SetEnvIf Host store3.magento2.com MAGE_RUN_CODE=store3
SetEnvIf Host store3.magento2.com MAGE_RUN_TYPE=store
SetEnvIf Host ^store3.magento2.com MAGE_RUN_CODE=store3
SetEnvIf Host ^store3.magento2.com MAGE_RUN_TYPE=store
index.phpの変更
を使用するとStore Switcher
、store2 / 3からデフォルトに切り替えるために2回クリックする必要がある場合があります。これを修正するに$_COOKIE['store']
は、index.phpの値をリセットする必要がありました。
<?php
/**
* Application entry point
*
* Example - run a particular store or website:
* --------------------------------------------
* require __DIR__ . '/app/bootstrap.php';
* $params = $_SERVER;
* $params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'website2';
* $params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'website';
* $bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $params);
* \/** @var \Magento\Framework\App\Http $app *\/
* $app = $bootstrap->createApplication('Magento\Framework\App\Http');
* $bootstrap->run($app);
* --------------------------------------------
*
* Copyright © 2016 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
try {
require __DIR__ . '/app/bootstrap.php';
} catch (\Exception $e) {
echo <<<HTML
<div style="font:12px/1.35em arial, helvetica, sans-serif;">
<div style="margin:0 0 25px 0; border-bottom:1px solid #ccc;">
<h3 style="margin:0;font-size:1.7em;font-weight:normal;text-transform:none;text-align:left;color:#2f2f2f;">
Autoload error</h3>
</div>
<p>{$e->getMessage()}</p>
</div>
HTML;
exit(1);
}
// Fix store switcher bug on switching to the default store
if ( isset($_SERVER['MAGE_RUN_TYPE']) == 'store' && isset($_SERVER['MAGE_RUN_CODE']) ) {
if ( !empty($_SERVER['MAGE_RUN_CODE']) ) {
$_COOKIE['store'] = $_SERVER['MAGE_RUN_CODE'];
}
}
$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
/** @var \Magento\Framework\App\Http $app */
$app = $bootstrap->createApplication('Magento\Framework\App\Http');
$bootstrap->run($app);
ユーザーログインで2回クリックする必要がある場合がある
上記の設定で、Store Switcher
は正常に動作しています。ショッピングCart
は、ログインしているユーザーとログインしていないユーザーの両方の3つのストアすべてで共有されます。
ただし、Store2およびStore3では、フロントエンドuser login
が同じログインページにリダイレクトする場合があります。Sign In
リダイレクトされたログインページのボタンを押すと(このボタンを2回目にクリックすると)、ログインできます。
この問題を修正する方法はありますか?
更新:無効化 Cache
コマンドラインからキャッシュを無効にしました:
php bin/magento cache:disable
無効なキャッシュを使用すると、user login
上のStore2とStore3は、はるかに安定しました。それでも、10回の試行のうち1回はログインページにリダイレクトされましたが、この変更によりログインがよりうまく機能するようになりました。
しかし、サイト全体が遅くなりました!!!
をuser login
マルチStore
セットアップで正しく実行するようにキャッシュを適切に構成する方法はありますか?