Próbuję skonfigurować sklep wielobranżowy ze wspólnym koszykiem. Jednak logowanie użytkownika czasami nie działa.
Store SwitcherDziała dobrze, ale nakładka User Loginna 2 i 3 Storewymaga ode mnie kliknij Sign Inprzycisk dwa razy się zalogować.
Mam skonfigurowane wiele sklepów z tymi konfiguracjami:
Multi Domain (Virtual Hosts)
Używam jednego Website. Witryna będzie miała trzy Stores. Nazwy domen będą miały wspólną wspólną domenę podstawową. Dodatkowe sklepy będą używać subdomen .
Stworzyłem magento2.com jako domyślną domenę podstawową.
Stworzyłem store2.magento2.com jako drugi sklep.
Stworzyłem store3.magento2.com jako trzeci sklep.
Kategorie główne i produkty testowe
Utworzyłem kategorię główną Store2 i kategorię główną Store3 . Utworzyłem również podkategorie w ramach każdej kategorii głównej.
Dodałem jeden produkt testowy do każdej podkategorii.
Sklepy i widoki
NIE zmieniłem niczego w głównym sklepie internetowym i domyślnym widoku sklepu .
Utworzyłem Store2 i Store View 2 dla drugiego sklepu.
Stworzyłem Store3 i Store View 3 dla trzeciego sklepu.
W przypadku Store2 ustawiłem Store2 jako Namei wybrałem kategorię katalogu głównego Store2 jako Root Category.
Dla Store View 2 wybrałem Store2 as Store, użyłem Store View 2 as Namei wprowadziłem store2 as Store Code.
Dla 3. Storeustawiłem Store3 jako Namei wybrałem kategorię katalogu głównego Store3 jako Root Category.
Dla Store View 3 wybrałem Store3 as Store, użyłem Store View 3 as Namei wprowadziłem store3 as Store Code.
Ustawienie adresu URL i plików cookie
ConfigurationTeraz ekran pokazuje 5 wyborów pod Store Viewrozwijaną:
Default ConfigMain WebsiteDefault Store View- Widok sklepu 2
- Widok sklepu 3
Zmieniłem adres URL i ustawienia plików cookie dla Default Store View, Widok sklepu 2 i Widok sklepu 3 .
NIE zmieniłem ustawień adresu URL ani plików cookie dla Default Configi Main Website.
Bo się Default Store Viewzmieniłem Cookie Path.
W przypadku widoku sklepu 2 zmieniłem Base URLi Cookie Path.
W widoku sklepu 3 zmieniłem Base URLi Cookie Path.
Udostępnianie konta
Aby udostępnić konta użytkowników i koszyk zakupów w wielu sklepach, zmieniłem Share Customer Accountsopcję „Na stronę internetową” na Globalną pod Default Config.
.htac zmiana
Dodałem te linie na górze .htaccesspliku w katalogu głównym projektu.
#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
zmiana index.php
Za pomocą Store Switcher, czasami wymagane dwukrotne kliknięcie, aby przełączyć z store2 / 3 do domyślnego. Aby to naprawić, musiałem zresetować wartość dla $_COOKIE['store']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);
Logowanie użytkownika czasami wymaga dwukrotnego kliknięcia
Przy powyższej konfiguracji Store Switcherdziała dobrze. Zakupy Cartsą wspólne dla wszystkich 3 sklepów zarówno dla zalogowanych, jak i niezalogowanych użytkowników.
Jednak w Store2 i Store3 frontend user loginczasami przekierowuje z powrotem na tę samą stronę logowania. Jeśli naciśniesz Sign Inprzycisk na przekierowanej stronie logowania (drugi raz, aby kliknąć ten przycisk), pozwolę się zalogować.
Czy istnieje sposób na rozwiązanie tego problemu?
Aktualizacja: wyłączanie Cache
Wyłączyłem buforowanie z wiersza poleceń:
php bin/magento cache:disable
Z wyłączoną pamięcią podręczną, user loginna Store2 i Store3 stały się znacznie bardziej stabilne. Nadal przekierowano z powrotem na stronę logowania 1 na 10 prób, ale ta zmiana sprawiła, że logowanie działało lepiej.
Jednak cała strona zwolniła !!!
Czy istnieje sposób, aby poprawnie skonfigurować pamięć podręczną, aby user loginpoprawnie działała na wielu Storekonfiguracjach?


















