ฉันกำลังพยายามติดตั้งหลายร้านด้วยรถเข็นที่ใช้ร่วมกัน อย่างไรก็ตามการเข้าสู่ระบบของผู้ใช้บางครั้งไม่ทำงาน
ใช้Store Switcher
งานได้ดี แต่ส่วนUser Login
ที่ 2 และ 3 Store
ต้องการให้ฉันคลิกSign In
ปุ่มสองครั้งเพื่อเข้าสู่ระบบ
ฉันมีการตั้งค่าหลายร้านค้าด้วยการตั้งค่าเหล่านี้:
หลายโดเมน (โฮสต์เสมือน)
ฉันกำลังใช้งานWebsite
อยู่ Stores
เว็บไซต์จะมีสาม ชื่อโดเมนจะแบ่งปันหนึ่งโดเมนพื้นฐานทั่วไป ร้านค้าเพิ่มเติมจะใช้โดเมนย่อย
ฉันสร้างmagento2.comเป็นโดเมนพื้นฐานเริ่มต้น
ฉันสร้างstore2.magento2.comเป็นร้านที่ 2
ฉันสร้างstore3.magento2.comเป็นร้านที่ 3
หมวดหมู่รูทและผลิตภัณฑ์ทดสอบ
ฉันสร้างstore2 รากหมวดหมู่และStore3 รากหมวดหมู่ ฉันสร้างหมวดหมู่ย่อยภายใต้หมวดหมู่รูทแต่ละหมวด
ฉันเพิ่มหนึ่งผลิตภัณฑ์ทดสอบในแต่ละหมวดหมู่ย่อย
ร้านค้าและมุมมอง
ผมไม่ได้เปลี่ยนแปลงอะไรในหลักร้านเว็บไซต์และเริ่มต้นร้านดู
ฉันสร้างStore2และStore View 2สำหรับร้านที่ 2
ฉันสร้างStore3และStore View 3สำหรับร้านค้าที่ 3
สำหรับstore2ผมตั้งstore2เป็นName
และเลือกstore2 รากหมวดหมู่Root Category
เป็น
สำหรับร้านค้า 2ผมเลือกstore2เป็นStore
ที่ใช้ในร้าน 2เป็นName
และเข้าstore2Store Code
เป็น
สำหรับ 3 Store
ผมตั้งStore3เป็นName
และเลือกStore3 รากหมวดหมู่Root Category
เป็น
สำหรับร้านค้า 3ผมเลือกStore3เป็นStore
ที่ใช้ในร้าน 3เป็นName
และเข้าstore3Store Code
เป็น
การตั้งค่า URL และคุกกี้
Configuration
หน้าจอในขณะนี้แสดงให้เห็นว่าทางเลือกที่ 5 ภายใต้Store View
หล่นลง:
Default Config
Main Website
Default Store View
- มุมมองร้านค้า 2
- มุมมองร้านค้า 3
ผมเปลี่ยนการตั้งค่า URL และคุกกี้สำหรับ Default Store View
, ร้าน 2และร้านค้า 3
ผมไม่ได้เปลี่ยนการตั้งค่า URL หรือคุกกี้สำหรับและDefault Config
Main Website
สำหรับผมเปลี่ยนDefault Store View
Cookie Path
สำหรับร้านค้า 2ผมเปลี่ยนและBase URL
Cookie Path
สำหรับร้านค้า 3ผมเปลี่ยนและBase URL
Cookie Path
การแชร์บัญชี
กับบัญชีผู้ใช้ร่วมกันและรถเข็นหมู่ร้านค้าหลายผมเปลี่ยนShare Customer Accounts
จาก "ต่อเว็บไซต์" เพื่อโลก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และStore3user login
บางครั้งส่วนหน้าเปลี่ยนเส้นทางกลับไปที่หน้าเข้าสู่ระบบเดียวกัน หากฉันกดSign In
ปุ่มบนหน้าเข้าสู่ระบบที่เปลี่ยนเส้นทาง (ครั้งที่สองเพื่อคลิกปุ่มนี้) ฉันจะเข้าสู่ระบบ
มีวิธีแก้ไขปัญหานี้หรือไม่?
อัปเดต: ปิดการใช้งาน Cache
ฉันปิดการใช้งานแคชจากบรรทัดคำสั่ง:
php bin/magento cache:disable
ด้วยแคชปิดใช้งานuser login
บนstore2และStore3กลายเป็นมีเสถียรภาพมากขึ้น มันยังคงเปลี่ยนเส้นทางกลับไปที่หน้าเข้าสู่ระบบ 1 จาก 10 ครั้ง แต่การเปลี่ยนแปลงนี้ทำให้การเข้าสู่ระบบทำงานได้ดีขึ้น
อย่างไรก็ตามเว็บไซต์ทั้งหมดช้า !!!
มีวิธีการกำหนดค่าแคชอย่างถูกต้องเพื่อให้การuser login
ดำเนินการอย่างถูกต้องในการStore
ตั้งค่าหลายหรือไม่?