Tôi đang cố gắng thiết lập một cửa hàng đa với giỏ hàng được chia sẻ. Tuy nhiên, đăng nhập người dùng đôi khi không hoạt động.
Hoạt Store Switcher
động tốt, nhưng frontend User Login
vào thứ 2 và thứ 3 Store
yêu cầu tôi nhấp vào Sign In
nút hai lần để đăng nhập.
Tôi đã thiết lập nhiều cửa hàng với các thiết lập này:
Đa miền (Máy chủ ảo)
Tôi đang sử dụng một Website
. Trang web sẽ có ba Stores
. Các tên miền sẽ chia sẻ một tên miền cơ sở chung. Các cửa hàng bổ sung sẽ sử dụng tên miền phụ .
Tôi đã tạo magento2.com làm tên miền cơ sở mặc định.
Tôi đã tạo store2.magento2.com là cửa hàng thứ 2.
Tôi đã tạo store3.magento2.com là cửa hàng thứ 3.
Danh mục gốc và sản phẩm thử nghiệm
Tôi đã tạo Store2 Root Category và Store3 Root Category . Tôi cũng đã tạo các danh mục phụ dưới mỗi Danh mục gốc.
Tôi đã thêm một sản phẩm thử nghiệm cho mỗi loại phụ.
Cửa hàng và Lượt xem
Tôi KHÔNG thay đổi bất cứ điều gì trên Cửa hàng trang web chính và Chế độ xem cửa hàng mặc định .
Tôi đã tạo Store2 và Store View 2 cho cửa hàng thứ 2.
Tôi đã tạo Store3 và Store View 3 cho cửa hàng thứ 3.
Đối với Store2 , tôi đặt Store2 là Name
và chọn Store2 Root Category là Root Category
.
Đối với cửa hàng View 2 , tôi đã chọn store2 như Store
, sử dụng cửa hàng View 2 là Name
, và bước vào store2 như Store Code
.
Lần thứ 3 Store
, tôi đặt Store3 là Name
và chọn Store3 Root Category là Root Category
.
Đối với Store View 3 , tôi đã chọn Store3 là Store
, sử dụng Store View 3 như Name
và nhập store3 dưới dạng Store Code
.
Cài đặt URL và Cookie
Các Configuration
màn hình tại chương trình 5 lựa chọn dưới Store View
thả xuống:
Default Config
Main Website
Default Store View
- Cửa hàng Xem 2
- Cửa hàng xem 3
Tôi đã thay đổi cài đặt URL và Cookie cho Default Store View
, Store View 2 và Store View 3 .
Tôi KHÔNG thay đổi cài đặt URL hoặc Cookie cho Default Config
và Main Website
.
Đối với Default Store View
, tôi đã thay đổi Cookie Path
.
Đối với Cửa hàng 2 , tôi đã thay đổi Base URL
và Cookie Path
.
Đối với Cửa hàng 3 , tôi đã thay đổi Base URL
và Cookie Path
.
Chia sẻ tài khoản
Để tài khoản người dùng chia sẻ và giỏ mua sắm giữa nhiều cửa hàng, tôi đã thay đổi Share Customer Accounts
từ "mỗi trang web" để toàn cầu dưới Default Config
.
.htaccess thay đổi
Tôi đã thêm các dòng này ở đầu .htaccess
tập tin tại thư mục gốc của dự án.
#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
thay đổi index.php
Sử dụng Store Switcher
, đôi khi được yêu cầu nhấp hai lần để chuyển từ store2 / 3 sang mặc định. Để khắc phục điều này, tôi đã phải đặt lại giá trị cho $_COOKIE['store']
tại 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);
Đăng nhập người dùng đôi khi yêu cầu nhấp hai lần
Với các thiết lập ở trên, hoạt Store Switcher
động tốt. Việc mua sắm Cart
được chia sẻ giữa cả 3 Cửa hàng cho cả người dùng đăng nhập và không đăng nhập.
Tuy nhiên, trên Store2 và Store3 , frontend user login
đôi khi chuyển hướng trở lại cùng một trang đăng nhập. Nếu tôi nhấn Sign In
nút trên trang đăng nhập được chuyển hướng (lần thứ 2 để nhấp vào nút này), thì hãy để tôi đăng nhập.
Có cách nào để khắc phục vấn đề này?
Cập nhật: vô hiệu hóa Cache
Tôi đã tắt bộ đệm từ dòng lệnh:
php bin/magento cache:disable
Với bộ nhớ cache bị vô hiệu hóa, user login
trên Store2 và Store3 trở nên ổn định hơn nhiều. Nó vẫn được chuyển hướng trở lại trang đăng nhập 1 trên 10 lần thử, nhưng thay đổi này đã giúp đăng nhập hoạt động tốt hơn.
Tuy nhiên, toàn bộ trang web trở nên chậm !!!
Có cách nào để cấu hình đúng bộ đệm user login
để thực hiện chính xác trên nhiều Store
thiết lập không?