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 ?
quelle
Antworten:
Wir haben es geschafft, den Store Switcher und die Anmeldung mit der neuen Konfiguration etwas stabiler zu machen.
Fügen Sie Speichercode zu URLs hinzu
Die größte Änderung war die Einstellung
Add Store Code to Urls
"Ja".Speicher =>
Konfiguration im Bereich Einstellungen =>
Auswahl
Default Config
=>Web im Abschnitt
ALLGEMEIN = = URL-Optionen =>
Ändern Sie den Wert
Add Store Code to Urls
in "Ja".Cookie-Domain entfernen
Dann haben wir den
Cookie Domain
Wert von Store2 und Store3 von der Konfigurationsseite entfernt.Stores =>
Konfiguration im Bereich Einstellungen => Wählen
Sie Store2 oder Store3 =>
Web im Abschnitt ALLGEMEIN = =
Standard-Cookie-Einstellungen =>
Entfernen Sie den Wert aus
Cookie Domain
und lassen Sie ihn leerEntfernen Sie benutzerdefinierte Codes von
.htaccess
undindex.php
Dann haben wir benutzerdefinierte Codezeilen aus
.htaccess
und entferntindex.php
.Mit der neuen Konfiguration war die Anpassung dieser Dateien nicht mehr erforderlich. Das ist großartiger, sauberer Code.
Nach diesen Änderungen wurden der Store Switcher, der freigegebene Warenkorb und die Benutzeranmeldung wesentlich stabiler. Stellen Sie sicher, dass Sie den Cache leeren, nachdem Sie diese Änderungen vorgenommen haben.
Magento2 Core Upgrade und seine Auswirkungen auf
.htaccess
undindex.php
Bevor wir Konfigurations- und Dateiänderungen vornehmen, haben wir den Magento2-Kern mit 2.1.0 auf 2.1.3 aktualisiert
composer
. (Referenz: Aktualisieren Sie Magento 2.1.2 für 2.1.3 )Wir sind nicht sicher, ob dies ein erforderlicher Teil für diese Multi-Store-Konfiguration sein wird, aber wir haben es durchgeführt, in der Hoffnung, dass die Site mit den neuesten Updates von 2.1.3 stabiler wird
Wir haben 3 Dateien geändert, die Teil der Kern- und Moduldateien waren (diese Dateien werden von unserer Git-Versionskontrolle ignoriert):
Beim Upgrade von Magento2 werden diese Dateien auf den Ausgangszustand 2.1.3 zurückgesetzt. Wir mussten unsere
.htaccess
undindex.php
Dateien NICHT manuell bereinigen . Der Dateiinhalt wurde durch das Upgrade automatisch zurückgesetzt. Dies war eine positive Nebenwirkung.Es gab aber auch eine schlimme Nebenwirkung. Unser benutzerdefinierter Code in der Grunt-Konfigurationsdatei wurde durch das Kern-Upgrade zurückgesetzt und gelöscht. Wir mussten unsere benutzerdefinierten Codezeilen in dieser Datei manuell wiederherstellen.
Ich empfehle, Datei- und DB-Sicherungen durchzuführen, bevor Sie dieses Kern-Upgrade und Konfigurations- / Dateiänderungen durchführen.
Das Minimieren von Javascript könnte helfen
Durch das Minimieren von JS wurde die gesamte Site auf unserer Site stabiler.
Shops =>
Konfiguration im Abschnitt Einstellung =>
wählen
Default Config
=>Entwickler in ADVANCED section =>
JavaScript Einstellungen =>
Satz
Merge JavaScript Files
auf "Ja" =>Satz
Enable JavaScript Bundling
auf "Ja" =>Satz
Minify JavaScript Files
auf "Ja" =>dann, klar Cache
quelle