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.

saravanavelu
sumber
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.

saravanavelu
sumber
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.

Meme
sumber
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);
Altravista
sumber