Ich versuche, einen Multi-Store mit gemeinsam genutztem Warenkorb einzurichten. Die Benutzeranmeldung funktioniert jedoch manchmal nicht.
Das Store Switcher
funktioniert gut, aber für das Frontend User Login
am 2. und 3. Store
muss ich Sign In
zweimal auf die Schaltfläche klicken, um mich anzumelden.
Ich habe mehrere Stores mit diesen Setups eingerichtet:
Multi Domain (virtuelle Hosts)
Ich benutze einen Website
. Die Seite wird drei haben Stores
. Die Domänennamen teilen sich eine gemeinsame Basisdomäne. Die zusätzlichen Speicher verwenden Subdomains .
Ich habe magento2.com als Standard- Basisdomäne erstellt .
Ich habe store2.magento2.com als 2. Store erstellt.
Ich habe store3.magento2.com als 3. Store erstellt.
Stammkategorien und Testprodukte
Ich habe Store2 Root Category und Store3 Root Category erstellt . Ich habe auch Unterkategorien unter jeder Stammkategorie erstellt.
Ich habe jeder Unterkategorie ein Testprodukt hinzugefügt.
Geschäfte und Ansichten
Ich habe im Main Website Store und in der Default Store View nichts geändert .
Ich habe Store2 und Store View 2 für den 2. Store erstellt.
Ich habe Store3 und Store View 3 für den 3. Store erstellt.
Für Store2 , habe ich Store2 wie Name
und ausgewählten Store2 Root - Kategorie wie Root Category
.
Für Store View 2 habe ich Store2 als ausgewählt Store
, Store View 2 als verwendet Name
und store2 als eingegebenStore Code
.
Für 3. Store
, habe ich Store3 wie Name
und ausgewählten Store3 Root - Kategorie wie Root Category
.
Für Store View 3 habe ich Store3 als ausgewählt Store
, Store View 3 als verwendet Name
und store3 als eingegebenStore Code
.
URL- und Cookie-Einstellung
Der Configuration
Bildschirm zeigt jetzt 5 Auswahlmöglichkeiten in der Store View
Dropdown-Liste:
Default Config
Main Website
Default Store View
- Store View 2
- Store View 3
Ich änderte URL und Cookie - Einstellungen für Default Store View
, Store View 2 und Store View 3 .
Ich habe die URL- oder Cookie-Einstellungen für Default Config
und NICHT geändert Main Website
.
Denn Default Store View
ich habe mich verändert Cookie Path
.
Für Store View 2 habe ich Base URL
und geändert Cookie Path
.
Für Store View 3 habe ich Base URL
und geändert Cookie Path
.
Konto teilen
Um Aktie Benutzerkonten und Warenkorb unter mehreren Geschäften, ich geändert Share Customer Accounts
von „Per Website“ zu Globale unter Default Config
.
.htaccess Änderung
Ich habe diese Zeilen oben in der .htaccess
Datei im Projektstammverzeichnis hinzugefügt .
#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 ändern
Verwenden Sie die Store Switcher
Taste, um manchmal zweimal zu klicken, um von store2 / 3 zum Standard zu wechseln. Um dies zu beheben, musste ich den Wert für $_COOKIE['store']
in der index.php zurücksetzen :
<?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);
Für die Benutzeranmeldung muss manchmal zweimal geklickt werden
Mit dem obigen Setup Store Switcher
funktioniert das einwandfrei. Der Einkauf Cart
wird von allen 3 Stores sowohl für angemeldete als auch für nicht angemeldete Benutzer geteilt.
In Store2 und Store3user login
leitet das Frontend jedoch manchmal zur gleichen Anmeldeseite zurück. Wenn ich die Sign In
Schaltfläche auf der umgeleiteten Anmeldeseite drücke (2. Mal, um auf diese Schaltfläche zu klicken), kann ich mich anmelden.
Gibt es eine Möglichkeit, dieses Problem zu beheben?
Update: Deaktivieren Cache
Ich habe das Caching über die Befehlszeile deaktiviert:
php bin/magento cache:disable
Mit deaktiviertem Cache wurden die user login
auf Store2 und Store3 viel stabiler. Von 10 Versuchen wurde immer noch auf die Anmeldeseite 1 umgeleitet, aber durch diese Änderung funktionierte die Anmeldung besser.
Die gesamte Seite wurde jedoch langsam !!!
Gibt es eine Möglichkeit, den Cache richtig zu konfigurieren, damit user login
er bei einem Multi- Store
Setup korrekt funktioniert ?