J'essaie de configurer un magasin multiple avec un panier partagé. Cependant, la connexion utilisateur ne fonctionne parfois pas.
Cela Store Switcher
fonctionne bien, mais le frontend des User Login
2 et 3 Store
me demande de cliquer Sign In
deux fois sur le bouton pour me connecter.
J'ai configuré plusieurs magasins avec ces configurations:
Multi domaine (hôtes virtuels)
J'en utilise un Website
. Le site en aura trois Stores
. Les noms de domaine partageront un domaine de base commun. Les magasins supplémentaires utiliseront des sous-domaines .
J'ai créé magento2.com comme domaine de base par défaut.
J'ai créé store2.magento2.com en tant que 2e magasin.
J'ai créé store3.magento2.com en tant que 3e magasin.
Catégories racine et produits de test
J'ai créé la catégorie racine Store2 et la catégorie racine Store3 . J'ai également créé des sous-catégories sous chaque catégorie racine.
J'ai ajouté un produit de test à chaque sous-catégorie.
Magasins et vues
Je n'ai rien changé sur la boutique principale du site Web et la vue par défaut de la boutique .
J'ai créé Store2 et Store View 2 pour le 2ème magasin.
J'ai créé Store3 et Store View 3 pour le 3e magasin.
Pour Store2 , j'ai défini Store2 comme Name
et sélectionné la catégorie racine Store2 comme Root Category
.
Pour Store View 2 , j'ai sélectionné Store2 as Store
, utilisé Store View 2 as Name
et entré store2 as Store Code
.
Pour le 3ème Store
, j'ai défini Store3 comme Name
et sélectionné la catégorie racine Store3 comme Root Category
.
Pour Store View 3 , j'ai sélectionné Store3 as Store
, utilisé Store View 3 as Name
et entré store3 as Store Code
.
Paramètre URL et cookie
L' Configuration
écran affiche maintenant 5 choix sous le Store View
menu déroulant:
Default Config
Main Website
Default Store View
- Vue du magasin 2
- Vue du magasin 3
J'ai modifié les paramètres d'URL et de cookies pour Default Store View
, Store View 2 et Store View 3 .
Je n'ai PAS modifié les paramètres d'URL ou de cookie pour Default Config
et Main Website
.
Car Default Store View
, j'ai changé Cookie Path
.
Pour Store View 2 , j'ai changé Base URL
et Cookie Path
.
Pour Store View 3 , j'ai changé Base URL
et Cookie Path
.
Partage de compte
Pour partager les comptes d'utilisateurs et le panier entre plusieurs magasins, je suis passé Share Customer Accounts
de "Par site Web" à Global sous Default Config
.
changement de .htaccess
J'ai ajouté ces lignes en haut du .htaccess
fichier dans le répertoire racine du projet.
#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
changement index.php
En utilisant le Store Switcher
, parfois nécessaire de cliquer deux fois pour passer de store2 / 3 à la valeur par défaut. Pour résoudre ce problème, j'ai dû réinitialiser la valeur de $_COOKIE['store']
l'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);
La connexion de l'utilisateur nécessite parfois de cliquer deux fois
Avec la configuration ci-dessus, le Store Switcher
fonctionne correctement. Les achats Cart
sont partagés entre les 3 magasins pour les utilisateurs connectés et non connectés.
Cependant, sur Store2 et Store3 , le frontend user login
redirige parfois vers la même page de connexion. Si j'appuie sur le Sign In
bouton de la page de connexion redirigée (2e fois pour cliquer sur ce bouton), cela me permet de me connecter.
Existe-t-il un moyen de résoudre ce problème?
Mise à jour: désactivation Cache
J'ai désactivé la mise en cache depuis la ligne de commande:
php bin/magento cache:disable
Avec le cache désactivé, le user login
sur Store2 et Store3 est devenu beaucoup plus stable. Il a toujours redirigé vers la page de connexion 1 tentative sur 10, mais cette modification a rendu la connexion plus efficace.
Cependant, l'ensemble du site est devenu lent !!!
Existe-t-il un moyen de configurer correctement le cache pour user login
qu'il fonctionne correctement sur une Store
configuration multiple ?