Estou tentando configurar uma loja múltipla com carrinho compartilhado. No entanto, o login do usuário às vezes não funciona.
A Store Switcherfina funciona, mas o frontend User Loginem 2º e 3º Storeexige que eu clique no Sign Inbotão duas vezes para login.
Eu tenho várias lojas de configuração com estas configurações:
Vários Domínios (Hosts Virtuais)
Eu estou usando um Website. O site terá três Stores. Os nomes de domínio compartilharão um domínio base comum. As lojas adicionais usarão subdomínios .
Criei magento2.com como o domínio base padrão.
Criei store2.magento2.com como a segunda loja.
Criei store3.magento2.com como a 3ª loja.
Categorias de raiz e produtos de teste
Criei a categoria raiz Store2 e a categoria raiz Store3 . Também criei subcategorias em cada categoria raiz.
Adicionei um produto de teste a cada subcategoria.
Lojas e Vistas
NÃO alterei nada na loja principal do site e na exibição padrão da loja .
Criei a Store2 e a Store View 2 para a 2ª loja.
Criei Store3 e Store View 3 para a 3ª loja.
Para Store2 , eu defino Store2 como Namee selecionei Store2 Root Category como Root Category.
Para a Visualização da loja 2 , selecionei a Loja2 como Store, usei a Visualização da loja 2 como Namee entrei na loja2 como Store Code.
Para o terceiro Store, defino Store3 como Namee selecione Store3 Root Category como Root Category.
Para a Visualização da loja 3 , selecionei a Loja3 como Store, usei a Visualização da loja 3 como Namee entrei na loja3 como Store Code.
Configuração de URL e Cookie
A Configurationtela agora mostra 5 opções no Store Viewmenu suspenso:
Default ConfigMain WebsiteDefault Store View- Vista da loja 2
- Vista da loja 3
Alterei as configurações de URL e cookie para Default Store View, Visualização da loja 2 e Visualização da loja 3 .
NÃO alterei as configurações de URL ou cookie para Default Confige Main Website.
Pois Default Store Viewmudei Cookie Path.
Para o Store View 2 , eu mudei Base URLe Cookie Path.
Para o Store View 3 , eu mudei Base URLe Cookie Path.
Compartilhamento de conta
Para compartilhar contas de usuário e carrinho de compras entre várias lojas, mudei Share Customer Accountsde "Por site" para Global em Default Config.
.htaccess change
Eu adicionei essas linhas na parte superior do .htaccessarquivo no diretório raiz do projeto.
#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
mudança index.php
Usando o Store Switcher, às vezes é necessário clicar duas vezes para alternar de store2 / 3 para o padrão. Para corrigir isso, tive que redefinir o valor para $_COOKIE['store']no 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);
Às vezes, o login do usuário exige clicar duas vezes
Com a configuração acima, o Store Switcherestá funcionando bem. As compras Cartsão compartilhadas entre todas as 3 lojas para usuários conectados e não conectados.
No entanto, na Store2 e Store3 , o front-end user loginàs vezes redireciona de volta para a mesma página de logon. Se eu pressionar o Sign Inbotão na página de login redirecionada (pela segunda vez para clicar neste botão), vamos fazer o login.
Existe alguma forma de corrigir esse problema?
Atualização: desativando Cache
Desativei o cache da linha de comando:
php bin/magento cache:disable
Com o cache desativado, user loginno Store2 e Store3 se tornou muito mais estável. Ele ainda foi redirecionado de volta para a página de login 1 em 10 tentativas, mas essa alteração fez com que o login funcionasse melhor.
No entanto, todo o site ficou lento !!!
Existe uma maneira de configurar corretamente o cache para que ele user loginfuncione corretamente em uma Storeconfiguração múltipla ?


















