Я пытаюсь настроить мульти магазин с общей корзиной. Однако логин пользователя иногда не работает.
Store Switcher
Работает отлично, но внешний интерфейс User Login
на втором и 3 Store
требует от меня , чтобы нажать на Sign In
кнопку дважды для входа.
Я настроил несколько магазинов с этими настройками:
Multi Domain (виртуальные хосты)
Я использую один Website
. На сайте будет три Stores
. Доменные имена будут иметь один общий базовый домен. Дополнительные магазины будут использовать субдомены .
Я создал magento2.com в качестве базового домена по умолчанию.
Я создал store2.magento2.com как второй магазин.
Я создал store3.magento2.com как третий магазин.
Корневые категории и тестовые продукты
Я создал корневую категорию Store2 и корневую категорию Store3 . Я также создал подкатегории в каждой корневой категории.
Я добавил один тестовый продукт в каждую подкатегорию.
Магазины и Виды
Я ничего не изменил на главном сайте магазине и по умолчанию магазина View .
Я создал Store2 и Store View 2 для второго магазина.
Я создал Store3 и Store View 3 для третьего магазина.
Для Store2 я установил Store2 как Name
и выбрал Store2 Root Category как Root Category
.
Для Store View 2 я выбрал Store2 как Store
, использовал Store View 2 как Name
и ввел store2 как Store Code
.
Для третьего Store
я установил Store3 как Name
и выбрал Store3 Root Category как Root Category
.
Для Store View 3 я выбрал Store3 как Store
, использовал Store View 3 как Name
и ввел store3 as Store Code
.
Настройка URL и cookie
Configuration
Экран теперь показывает 5 вариантов под Store View
раскрывающимся:
Default Config
Main Website
Default Store View
- Store View 2
- Store View 3
Я изменил настройки URL и Cookie для Default Store View
, Store View 2 и Store View 3 .
Я НЕ изменил настройки URL или cookie для Default Config
и Main Website
.
Для Default Store View
, я изменился Cookie Path
.
Для Store View 2 я изменил Base URL
и Cookie Path
.
Для Store View 3 я изменил Base URL
и Cookie Path
.
Совместное использование аккаунта
Для учетных записей пользователей акций и покупок корзины среди множества магазинов, я изменился Share Customer Accounts
от «Per Сайта» в Global под Default Config
.
.htaccess изменить
Я добавил эти строки вверху .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
установке?