Saya mencoba menyiapkan multi store dengan keranjang bersama. Namun, login pengguna terkadang tidak berfungsi.
The Store Switcher
bekerja dengan baik, tetapi frontend User Login
pada 2 dan 3 Store
mengharuskan saya untuk mengklik Sign In
tombol dua kali untuk login.
Saya memiliki pengaturan multi store dengan pengaturan ini:
Multi Domain (Host Virtual)
Saya menggunakan satu Website
. Situs ini akan memiliki tiga Stores
. Nama domain akan berbagi satu domain basis umum. Toko tambahan akan menggunakan subdomain .
Saya membuat magento2.com sebagai domain basis default.
Saya membuat store2.magento2.com sebagai toko ke-2.
Saya membuat store3.magento2.com sebagai toko ke-3.
Kategori Root dan Produk Uji
Saya membuat Kategori Root Store2 dan Kategori Root Store3 . Saya juga membuat sub kategori di bawah setiap Kategori Root.
Saya menambahkan satu produk uji untuk setiap sub kategori.
Toko dan Tampilan
Saya TIDAK mengubah apa pun di Toko Situs Web Utama dan Tampilan Toko Default .
Saya membuat Store2 dan Store View 2 untuk toko ke-2.
Saya membuat Store3 dan Store View 3 untuk toko ke-3.
Untuk Store2 , saya mengatur Store2 sebagai Name
dan memilih Kategori Root Store2 sebagai Root Category
.
Untuk Store View 2 , saya memilih Store2 sebagai Store
, menggunakan Store View 2 sebagai Name
, dan memasukkan store2 sebagai Store Code
.
Untuk tanggal 3 Store
, saya menetapkan Store3 sebagai Name
dan memilih Kategori Root Store3 sebagai Root Category
.
Untuk Store View 3 , saya memilih Store3 sebagai Store
, menggunakan Store View 3 sebagai Name
, dan memasukkan store3 sebagai Store Code
.
Pengaturan URL dan Cookie
The Configuration
Layar sekarang menunjukkan 5 pilihan di bawah Store View
drop-down:
Default Config
Main Website
Default Store View
- Tampilan Toko 2
- Tampilan Toko 3
Saya mengubah pengaturan URL dan Cookie untuk Default Store View
, Tampilan Toko 2 , dan Tampilan Toko 3 .
Saya TIDAK mengubah pengaturan URL atau Cookie untuk Default Config
dan Main Website
.
Karena Default Store View
saya berubah Cookie Path
.
Untuk Tampilan Toko 2 , saya berubah Base URL
dan Cookie Path
.
Untuk Tampilan Toko 3 , saya berubah Base URL
dan Cookie Path
.
Berbagi Akun
Untuk berbagi akun pengguna dan keranjang belanja di antara beberapa toko, saya mengubah Share Customer Accounts
dari "Per Situs Web" menjadi Global di bawah Default Config
.
.htaccess berubah
Saya menambahkan baris ini di bagian atas .htaccess
file di direktori root proyek.
#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
perubahan index.php
Menggunakan Store Switcher
, kadang-kadang diperlukan untuk mengklik dua kali untuk beralih dari store2 / 3 ke default. Untuk memperbaikinya, saya harus mereset nilai $_COOKIE['store']
di 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);
Login pengguna terkadang harus mengklik dua kali
Dengan pengaturan di atas, Store Switcher
berfungsi dengan baik. Belanja Cart
dibagi di antara ketiga Toko untuk pengguna yang masuk dan tidak masuk.
Namun, pada Store2 dan Store3 , frontend user login
terkadang dialihkan kembali ke halaman login yang sama. Jika saya menekan Sign In
tombol pada halaman login yang dialihkan (kali ke-2 untuk mengklik tombol ini), mari saya login.
Adakah cara untuk menyelesaikan masalah ini?
Perbarui: nonaktifkan Cache
Saya menonaktifkan caching dari baris perintah:
php bin/magento cache:disable
Dengan cache yang dinonaktifkan, user login
pada Store2 dan Store3 menjadi jauh lebih stabil. Itu masih diarahkan kembali ke halaman login 1 dari 10 upaya, tetapi perubahan ini membuat login berfungsi lebih baik.
Namun, seluruh situs menjadi lambat !!!
Apakah ada cara untuk mengonfigurasi cache dengan benar untuk membuatnya user login
bekerja dengan benar pada multi- Store
setup?