Estoy tratando de configurar una tienda múltiple con carrito compartido. Sin embargo, el inicio de sesión del usuario a veces no funciona.
La Store Switcher
obras excelentes, pero la interfaz User Login
días 2 y 3 Store
me obliga a hacer clic en el Sign In
botón dos veces para inicio de sesión.
He configurado varias tiendas con estas configuraciones:
Multi Dominio (Hosts Virtuales)
Estoy usando uno Website
. El sitio tendrá tres Stores
. Los nombres de dominio compartirán un dominio base común. Las tiendas adicionales usarán subdominios .
He creado magento2.com como el dominio de base por defecto.
He creado store2.magento2.com como la segunda tienda.
He creado store3.magento2.com como la tercera tienda.
Categorías de raíz y productos de prueba
He creado store2 Raíz de la categoría y Store3 Raíz de la categoría . También creé subcategorías en cada categoría raíz.
Agregué un producto de prueba a cada subcategoría.
Tiendas y vistas
NO cambié nada en la Tienda del sitio web principal y en la Vista de tienda predeterminada .
He creado store2 y tienda Ver 2 para la segunda tienda.
He creado Store3 y tienda Ver 3 para la tercera tienda.
Para Store2 , configuré Store2 como Name
y seleccioné Store2 Root Category como Root Category
.
Para Store View 2 , seleccioné Store2 como Store
, utilicé Store View 2 como Name
, e ingresé store2 como Store Code
.
Para el tercero Store
, configuré Store3 como Name
y seleccioné Store3 Root Category como Root Category
.
Para Store View 3 , seleccioné Store3 como Store
, utilicé Store View 3 como Name
, e ingresé store3 como Store Code
.
Configuración de URL y cookies
La Configuration
pantalla ahora muestra 5 opciones en el Store View
menú desplegable:
Default Config
Main Website
Default Store View
- Vista de tienda 2
- Vista de tienda 3
He cambiado la configuración de URL y de la galleta por Default Store View
, tienda Vista 2 , y tienda Ver 3 .
NO cambié la configuración de URL o Cookie para Default Config
y Main Website
.
Porque Default Store View
yo cambié Cookie Path
.
Para Store View 2 , cambié Base URL
y Cookie Path
.
Para Store View 3 , cambié Base URL
y Cookie Path
.
Compartir cuenta
Para compartir cuentas de usuario y carrito de compras entre varias tiendas, cambié Share Customer Accounts
de "Por sitio web" a Global en Default Config
.
.htaccess change
Agregué estas líneas en la parte superior del .htaccess
archivo en el directorio raíz del proyecto.
#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 veces se requiere hacer clic dos veces para cambiar de store2 / 3 al predeterminado Para solucionar esto, tuve que restablecer el valor $_COOKIE['store']
en 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);
El inicio de sesión del usuario a veces requiere hacer clic dos veces
Con la configuración anterior, Store Switcher
funciona correctamente. Las compras Cart
se comparten entre las 3 tiendas tanto para los usuarios que han iniciado sesión como para los que no lo han hecho.
Sin embargo, en Store2 y Store3 , la interfaz a user login
veces redirige a la misma página de inicio de sesión. Si presiono el Sign In
botón en la página de inicio de sesión redirigida (segunda vez que hago clic en este botón), me permite iniciar sesión.
¿Hay alguna forma de solucionar este problema?
Actualización: deshabilitar Cache
Deshabilité el almacenamiento en caché desde la línea de comandos:
php bin/magento cache:disable
Con el caché deshabilitado, user login
en Store2 y Store3 se volvió mucho más estable. Todavía redirigió a la página de inicio de sesión 1 de cada 10 intentos, pero este cambio hizo que el inicio de sesión funcionara mejor.
¡Sin embargo, todo el sitio se volvió lento!
¿Hay alguna manera de configurar correctamente el caché para que user login
funcione correctamente en una Store
configuración múltiple ?