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 Switcherobras excelentes, pero la interfaz User Logindías 2 y 3 Storeme obliga a hacer clic en el Sign Inbotó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 Namey 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 Namey 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 Configurationpantalla ahora muestra 5 opciones en el Store Viewmenú desplegable:
Default ConfigMain WebsiteDefault 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 Configy Main Website.
Porque Default Store Viewyo cambié Cookie Path.
Para Store View 2 , cambié Base URLy Cookie Path.
Para Store View 3 , cambié Base URLy Cookie Path.
Compartir cuenta
Para compartir cuentas de usuario y carrito de compras entre varias tiendas, cambié Share Customer Accountsde "Por sitio web" a Global en Default Config.
.htaccess change
Agregué estas líneas en la parte superior del .htaccessarchivo 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 Switcherfunciona correctamente. Las compras Cartse 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 loginveces redirige a la misma página de inicio de sesión. Si presiono el Sign Inbotó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 loginen 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 loginfuncione correctamente en una Storeconfiguración múltiple ?


















