Ich versuche, einen Multi-Store mit gemeinsam genutztem Warenkorb einzurichten. Die Benutzeranmeldung funktioniert jedoch manchmal nicht.
Das Store Switcherfunktioniert gut, aber für das Frontend User Loginam 2. und 3. Storemuss ich Sign Inzweimal 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 Nameund 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 Nameund store2 als eingegebenStore Code .
Für 3. Store, habe ich Store3 wie Nameund 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 Nameund store3 als eingegebenStore Code .
URL- und Cookie-Einstellung
Der ConfigurationBildschirm zeigt jetzt 5 Auswahlmöglichkeiten in der Store ViewDropdown-Liste:
Default ConfigMain WebsiteDefault 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 Configund NICHT geändert Main Website.
Denn Default Store Viewich habe mich verändert Cookie Path.
Für Store View 2 habe ich Base URLund geändert Cookie Path.
Für Store View 3 habe ich Base URLund geändert Cookie Path.
Konto teilen
Um Aktie Benutzerkonten und Warenkorb unter mehreren Geschäften, ich geändert Share Customer Accountsvon „Per Website“ zu Globale unter Default Config.
.htaccess Änderung
Ich habe diese Zeilen oben in der .htaccessDatei 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 SwitcherTaste, 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 Switcherfunktioniert das einwandfrei. Der Einkauf Cartwird 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 InSchaltflä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 loginauf 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 loginer bei einem Multi- StoreSetup korrekt funktioniert ?


















