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?
sumber
Jawaban:
Kami berhasil membuat pengalih toko dan masuk sedikit lebih stabil dengan konfigurasi baru.
Tambahkan Kode Toko ke Url
Perubahan terbesar adalah pengaturan
Add Store Code to Urls
ke "Ya".Toko =>
Konfigurasi di bagian Pengaturan =>
pilih
Default Config
=>Web di bagian UMUM =>
Url Opsi =>
ubah
Add Store Code to Urls
ke "Ya"Hapus Domain Cookie
Kemudian, kami menghapus
Cookie Domain
nilai dari Store2 dan Store3 dari halaman Konfigurasi.Toko =>
Konfigurasi di bagian Pengaturan =>
pilih Store2 atau Store3 =>
Web di bagian UMUM =>
Pengaturan Cookie Default =>
hapus nilai dari
Cookie Domain
dan biarkan kosongHapus kode khusus dari
.htaccess
danindex.php
Lalu, kami menghapus bentuk garis kode kustom
.htaccess
danindex.php
.Dengan konfigurasi baru, penyesuaian pada file-file ini tidak lagi diperlukan. Ini bagus, kode pembersih.
Setelah perubahan ini, pengalih toko, keranjang belanja bersama, dan login pengguna menjadi jauh lebih stabil. Pastikan Anda menghapus cache setelah Anda melakukan perubahan ini.
Upgrade inti Magento2 dan pengaruhnya terhadap
.htaccess
danindex.php
Sebelum membuat perubahan konfigurasi dan file, kami meningkatkan inti Magento2 dari 2.1.0 ke 2.1.3 menggunakan
composer
. (Referensi: Perbarui Magento 2.1.2 untuk 2.1.3 )Kami tidak yakin ini akan menjadi bagian yang diperlukan untuk konfigurasi multi-toko ini, tetapi kami melakukannya dengan harapan situs akan lebih stabil dengan pembaruan terbaru dari 2.1.3
Kami memiliki 3 file yang dimodifikasi yang merupakan bagian dari file inti dan modul (file-file ini diabaikan oleh kontrol versi Git kami):
Ketika kami memutakhirkan Magento2, file-file ini diatur ulang ke keadaan awal 2.1.3. Kami TIDAK harus secara manual membersihkan file
.htaccess
dan kamiindex.php
. Isi file secara otomatis diatur ulang oleh peningkatan. Ini adalah efek samping yang positif.Tetapi ada juga efek samping yang buruk. Kode khusus kami dalam file konfigurasi Grunt telah direset dan dihapus oleh upgrade inti. Kami harus secara manual mengembalikan baris kode khusus kami pada file ini.
Saya sarankan untuk mengambil cadangan file dan DB sebelum melakukan pemutakhiran inti ini dan perubahan konfigurasi / file.
Meminimalkan Javascript mungkin membantu
Meminimalkan JS membuat seluruh situs lebih stabil di situs kami.
Toko =>
Konfigurasi di bagian Pengaturan =>
pilih
Default Config
=>Pengembang di bagian ADVANCED =>
Pengaturan JavaScript =>
atur
Merge JavaScript Files
ke "Ya" =>atur
Enable JavaScript Bundling
ke "Ya" =>atur
Minify JavaScript Files
ke "Ya" =>lalu, bersihkan cache
sumber