Я намагаюся налаштувати кілька магазинів із спільним кошиком. Однак вхід користувача іноді не працює.
Store SwitcherПрацює відмінно, але зовнішній інтерфейс User Loginна другому і 3 Storeвимагає від мене , щоб натиснути на Sign Inкнопку двічі для входу.
У мене налаштування декількох магазинів із цими налаштуваннями:
Багатодомен (віртуальні хости)
Я використовую один Website. На сайті буде три Stores. Імена домену поділять один загальний базовий домен. У додаткових магазинах будуть використовуватися субдомени .
Я створив magento2.com як базовий домен за замовчуванням.
Я створив store2.magento2.com як другий магазин.
Я створив store3.magento2.com як 3-й магазин.
Кореневі категорії та тестові продукти
Я створив Store2 Root Category та Store3 Root Category . Я також створив підкатегорії під кожною категорією Root.
Я додав по одному тестовому продукту до кожної підкатегорії.
Магазини та види
Я не змінив нічого в головному магазині веб-сайтів і в магазині за замовчуванням .
Я створив Store2 та Store View 2 для другого магазину.
Я створив Store3 та Store View 3 для 3-го магазину.
Для Store2 я встановив Store2 як Nameі вибрав Кореневу категорію Store2 як Root Category.
Для магазину View 2 я вибрав Store2 як Store, використовував Store View 2 як Nameі ввів store2 як Store Code.
Для третього Storeя встановив Store3 як Nameі вибрав Кореневу категорію Store3 як Root Category.
Для перегляду магазину 3 я вибрав Store3 як Store, використовував Store View 3 як Nameі ввів store3 як Store Code.
Налаштування URL-адреси та файлів cookie
Зараз на Configurationекрані відображається 5 варіантів у Store Viewспадному меню:
Default ConfigMain WebsiteDefault Store View- Перегляд магазину 2
- Перегляд магазину 3
Я змінив налаштування URL-адрес і файлів cookie для Default Store View, Перегляд магазину 2 та Перегляд магазину 3 .
Я НЕ змінив налаштування URL-адреси чи файлів cookie для Default Configта Main Website.
Бо Default Store Viewя змінився Cookie Path.
Для магазину View 2 я змінив Base URLі Cookie Path.
Для перегляду магазину 3 я змінив Base URLі Cookie Path.
Обмін рахунком
Для облікових записів користувачів акцій і покупок кошика серед безлічі магазинів, я змінився Share Customer Accountsвід «Per Сайту» в Global під Default Config.
.зміна зміни доступу
Я додав ці рядки у верхній частині .htaccessфайлу у кореневому каталозі проекту.
#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
зміна index.php
Використовуючи Store Switcher, іноді потрібно двічі клацнути, щоб перейти з store2 / 3 до типового. Щоб виправити це, мені довелося скинути значення для $_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);
Для входу користувача іноді потрібно натиснути двічі
З наведеними вище налаштуваннями Store Switcherфункціонує нормально. Покупки Cartподіляються між усіма 3-ма магазинами як для користувачів, що ввійшли, так і не ввійшли в систему.
Однак, на Store2 та Store3 , інтерфейс user loginіноді переспрямовується назад на ту саму сторінку входу. Якщо я натискаю Sign Inкнопку на перенаправленій сторінці входу (другий раз, щоб натиснути цю кнопку), це дозволить мені увійти.
Чи є спосіб виправити цю проблему?
Оновлення: відключення Cache
Я відключив кешування з командного рядка:
php bin/magento cache:disable
З відключеним кешем user loginна Store2 та Store3 стали набагато стабільнішими. Він все одно перенаправлявся назад на сторінку входу з 1 із 10 спроб, але ця зміна зробила вхід краще працювати.
Однак весь сайт став повільним !!!
Чи є спосіб правильно налаштувати кеш-пам'ять, щоб змусити її user loginвиконувати правильно під час декількох Storeналаштувань?


















