Я намагаюся налаштувати кілька магазинів із спільним кошиком. Однак вхід користувача іноді не працює.
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 Config
Main Website
Default 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
налаштувань?