Sto cercando di configurare un multi store con carrello condiviso. Tuttavia, l'accesso dell'utente a volte non funziona.
Il Store Switcherfunziona bene, ma il frontend User Loginil 2 e 3 Storemi obbliga a fare clic sul Sign Intasto 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 Namee selezionato Categoria radice Store2 come Root Category.
Per Store View 2 , ho selezionato Store2 come , ho Storeutilizzato Store View 2 come Namee ho inserito store2 come Store Code.
Per il terzo Store, ho impostato Store3 come Namee selezionato Categoria radice Store3 come Root Category.
Per Store View 3 , ho selezionato Store3 come , ho Storeutilizzato Store View 3 come Namee ho inserito store3 come Store Code.
Impostazione URL e cookie
La Configurationschermata ora mostra 5 opzioni nel Store Viewmenu a discesa:
Default ConfigMain WebsiteDefault 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 Confige Main Website.
Per Default Store View, ho cambiato Cookie Path.
Per Store View 2 , ho cambiato Base URLe Cookie Path.
Per Store View 3 , ho cambiato Base URLe Cookie Path.
Condivisione dell'account
Per condividere account utente e carrello tra più negozi, sono passato Share Customer Accountsda "Per sito Web" a Globale sotto Default Config.
.htaccess change
Ho aggiunto queste righe all'inizio del .htaccessfile 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 Switcherfunziona 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 loginvolte reindirizza alla stessa pagina di accesso. Se premo il Sign Inpulsante 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 loginsu 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 loginche funzioni correttamente su una Storeconfigurazione multipla ?


















