Sto cercando di configurare un multi store con carrello condiviso. Tuttavia, l'accesso dell'utente a volte non funziona.
Il Store Switcher
funziona bene, ma il frontend User Login
il 2 e 3 Store
mi obbliga a fare clic sul Sign In
tasto due volte per login.
Ho impostato più negozi con queste impostazioni:
Multi dominio (host virtuali)
Ne sto usando uno Website
. Il sito ne avrà tre Stores
. I nomi di dominio condivideranno un dominio di base comune. I negozi aggiuntivi utilizzeranno i sottodomini .
Ho creato magento2.com come dominio di base predefinito.
Ho creato store2.magento2.com come secondo negozio.
Ho creato store3.magento2.com come terzo negozio.
Categorie di root e prodotti di test
Ho creato la Categoria radice Store2 e la Categoria radice Store3 . Ho anche creato sottocategorie in ogni categoria principale.
Ho aggiunto un prodotto di prova per ogni sottocategoria.
Negozi e viste
Non ho modificato nulla nel negozio principale del sito Web e nella vista predefinita del negozio .
Ho creato Store2 e Store View 2 per il 2o negozio.
Ho creato Store3 e Store View 3 per il 3 ° negozio.
Per Store2 , ho impostato Store2 come Name
e selezionato Categoria radice Store2 come Root Category
.
Per Store View 2 , ho selezionato Store2 come , ho Store
utilizzato Store View 2 come Name
e ho inserito store2 come Store Code
.
Per il terzo Store
, ho impostato Store3 come Name
e selezionato Categoria radice Store3 come Root Category
.
Per Store View 3 , ho selezionato Store3 come , ho Store
utilizzato Store View 3 come Name
e ho inserito store3 come Store Code
.
Impostazione URL e cookie
La Configuration
schermata ora mostra 5 opzioni nel Store View
menu a discesa:
Default Config
Main Website
Default Store View
- Store View 2
- Store View 3
Ho modificato le impostazioni di URL e cookie per Default Store View
, Store View 2 e Store View 3 .
Non ho modificato le impostazioni di URL o Cookie per Default Config
e Main Website
.
Per Default Store View
, ho cambiato Cookie Path
.
Per Store View 2 , ho cambiato Base URL
e Cookie Path
.
Per Store View 3 , ho cambiato Base URL
e Cookie Path
.
Condivisione dell'account
Per condividere account utente e carrello tra più negozi, sono passato Share Customer Accounts
da "Per sito Web" a Globale sotto Default Config
.
.htaccess change
Ho aggiunto queste righe all'inizio del .htaccess
file nella directory principale del progetto.
#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
cambio index.php
Usando Store Switcher
, a volte è necessario fare doppio clic per passare da store2 / 3 a quello predefinito. Per risolvere questo problema, ho dovuto reimpostare il valore $_COOKIE['store']
su 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);
L'accesso dell'utente a volte richiede di fare doppio clic
Con la configurazione sopra, Store Switcher
funziona correttamente. Lo shopping Cart
è condiviso tra tutti e 3 i negozi sia per gli utenti che hanno effettuato il login.
Tuttavia, su Store2 e Store3 , il frontend a user login
volte reindirizza alla stessa pagina di accesso. Se premo il Sign In
pulsante sulla pagina di accesso reindirizzata (seconda volta per fare clic su questo pulsante), mi permetto di accedere.
C'è un modo per risolvere questo problema?
Aggiornamento: disabilitazione Cache
Ho disabilitato la memorizzazione nella cache dalla riga di comando:
php bin/magento cache:disable
Con la cache disabilitata, user login
su Store2 e Store3 sono diventati molto più stabili. Reindirizzava ancora alla pagina di accesso 1 su 10 tentativi, ma questa modifica ha permesso al login di funzionare meglio.
Tuttavia, l'intero sito è diventato lento !!!
Esiste un modo per configurare correttamente la cache in modo user login
che funzioni correttamente su una Store
configurazione multipla ?