Buat Multi Website / Toko di magento 2


15

Bisakah Anda memberikan sumber / prosedur untuk membuat multi situs web di magento 2. Saya punya google mengenai hal ini, tetapi tidak ada sumber / prosedur yang tidak menyediakan jalur untuk membuat multi situs web / toko.


Anda juga dapat mengatur multi-situs pengalih ke ujung depan seperti pengalih bahasa dan pengalih toko .. lihat tautan ini - stackoverflow.com/questions/39290073/...

Silakan periksa tautan ini ... dan berfungsi dengan baik. Klik di sini misalnya
— Virang Jethva

Jawaban:


22

Membuat banyak situs web di magento, Langkah-langkah untuk membuat multistore di panel admin sama seperti di magento1.x. Jangan lupa ganti url dasar dan url aman untuk situs web / toko baru. Setelah membuat perubahan di panel admin ikuti langkah-langkah di bawah ini,

1) Buat folder baru di root magento dan salin index.phpdan .htaccessfile dari root magento ke folder baru.

2) Edit index.phpyang ada di folder baru

Menggantikan:

$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);

/** @var \Magento\Framework\App\Http $app */

$app = $bootstrap->createApplication('Magento\Framework\App\Http');

$bootstrap->run($app);

Dengan:

 $params = $_SERVER;

 $params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'newstore'; //Webite code as same in admin panel

 $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);

Dan juga perbarui bootstrap.php termasuk path seperti di bawah ini,

Menggantikan:

require __DIR__ . '/app/bootstrap.php';

Dengan:

require __DIR__ . '/../app/bootstrap.php';

3) Buat simlink di dalam folder baru

 ln -s /home/example/example.com/html/app/ app 

 ln -s /home/example/example.com/html/lib/ lib 

 ln -s /home/example/example.com/html/pub/ pub 

 ln -s /home/example/example.com/html/var/ var 

Lihat ini

Harap hapus var/generation,var/cache and pub/staticfile dan lakukan penyebaran konten statis.


Saya pikir kita harus menyalin .htaccessjuga (bersama dengan index.php) dari root ke folder baru.
— Andrea

1
dapatkah Anda mengatur multistores tanpa nilai hardcoding di index.php atau htaccess menggunakan menambahkan kode toko ke url? tampaknya tidak bekerja di magento2
— Claudiu Creanga

Sudahkah Anda mencoba melakukan ini dengan konfigurasi yang disarankan untuk lingkungan produksi dan mengarahkan webroot ke [Magento root] / pub?
— Facundo Capua

Apakah Anda memiliki masalah menerapkan tema khusus yang sama untuk kedua situs web? Milik saya situs web kedua memuat aset dari ../ en_US / ... bukannya ../en_GB/ .. ada ide apa yang bisa?
— Juliano Vargas

Coba gunakan tema tertentu dengan kode bahasa
— saravanavelu

4

terima kasih untuk sumber ini

di Magento backend, buka Toko> Semua Toko Buat di sini arsitektur Anda dengan berbagai situs web / store / storeview Perhatikan dengan cermat kode situs web, misalnya,

  • Toko USA memiliki kode: kami, dan akan diakses oleh www.store.com
  • Toko Prancis memiliki kode: fr, dan akan diakses oleh www.store.fr
  • Toko Spanyol memiliki kode: es, dan akan diakses oleh www.store.es

di file konfigurasi Nginx Anda (kemungkinan besar di folder / etc / nginx / sites-enabled) tambahkan di bagian atas file config:

map $HTTP_HOST $mage_run_code {
www.store.com us;
www.store.fr fr;
www.store.es es;
}

lalu, di serverblok, tambahkan deklarasi untuk mendengarkan 3 domain:

server {
 listen 80;
 server_name www.store.com www.store.fr www.store.es;

// whatever other config you get...
}

terakhir, dalam konfigurasi php (blok dimulai dengan location ~ \. php $ {), tambahkan

fastcgi_param MAGE_RUN_TYPE website;
fastcgi_param MAGE_RUN_CODE $mage_run_code;

sebelum baris (Anda biasanya akan melihat baris lain dimulai dengan fastcgi_param)

 include        fastcgi_params;

simpan file konfigurasi Anda, restart server Nginx Anda dan voila.



0

Cara sederhana diuji pada Magento 2.2.5

Buat alias domain di server Anda contoh domain2.com

Edit file index.php di root magento

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);
}

$params = $_SERVER;
$customstore = array(
    'www.main.com'=>'main_website', // Website, Store or Storeview Code
    'www.domian2.com'=>'domain2_website'     // Website, Store or Storeview Code
    );
if(isset($customstore[$_SERVER['HTTP_HOST']]))
    $websitecode = $customstore[$_SERVER['HTTP_HOST']];
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = isset($websitecode) ? $websitecode : '';
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'website';//use website or store or view 
$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $params);
$app = $bootstrap->createApplication('Magento\Framework\App\Http');
$bootstrap->run($app);
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.