Magento 2'de Çoklu Web Sitesi / Mağazalar Oluşturun


16

Magento 2'de bir çoklu web siteleri oluşturmak için lütfen kaynak / prosedürler sağlayabilir misiniz? Bununla ilgili bir google var, ancak kaynak / prosedürün hiçbiri çoklu web sitesi / mağaza oluşturma yolu sağlamadı.


Dil değiştirici ve mağaza değiştirici gibi çok amaçlı anahtarlayıcıyı kullanıcı

Lütfen bu bağlantıyı kontrol edin ... ve iyi çalışıyor. Örnek için tıklayın
Virang Jethva

Yanıtlar:


24

Magento'da çoklu web sitesi oluşturuldu, Yönetici panelinde çoklu mağaza oluşturma adımları magento1.x ile aynıdır. Yeni web sitesi / mağaza için temel URL'yi ve güvenli URL'yi değiştirmeyi unutmayın. Yönetici panelinde değişiklikler yapıldıktan sonra aşağıdaki adımları izleyin,

1) Magento root dizininde yeni bir klasör oluşturun ve index.phpve .htaccessdosyalarını magento root dizininden yeni klasöre kopyalayın.

2) index.phpYeni klasörde olanı düzenleyin

Değiştir:

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

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

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

$bootstrap->run($app);

İle:

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

Ve ayrıca bootstrap.php güncelleme yolunu aşağıdaki gibi güncelleyin,

Değiştir:

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

İle:

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

3) Yeni klasörün içinde bir simlink oluşturun

 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 

bakın bu

Lütfen var/generation,var/cache and pub/staticdosyaları silin ve statik içerik dağıtımını yapın.


Ben .htaccessde index.phpkökünden yeni klasöre (birlikte ) kopyalamak zorunda olduğunu düşünüyorum .
Andrea

1
url'lere mağaza kodları ekleyerek index.php veya htaccess içindeki sabit kodlama değerleri olmadan çok sayıda depo kurabilir misiniz? magento2 üzerinde çalışmıyor gibi görünüyor
Claudiu Creanga

Bunu üretim ortamları için önerilen yapılandırma ile ve webroot'u [Magento root] / pub'a yönlendirmeyi denediniz mi?
Facundo Capua

Her iki web sitesine de aynı özel temayı uygularken sorun yaşadınız mı? Benim ikinci web sitesi ../en_GB/ .. yerine ../en_US / ... varlık yüklüyor ne olabilir?
Juliano Vargas

Dil koduyla belirli bir temayı konuşlandırmayı deneyin
saravanavelu

4

bu kaynak sayesinde

Magento arka ucunda, Mağazalar> Tüm Mağazalar'a gidin Farklı web siteleri / mağaza / mağaza görünümü ile mimarinizi oluşturun Burada, web sitesi kodlarını dikkatlice not edin,

  • ABD mağazasının kodu var: bize ve erişilecek www.store.com
  • Fransız mağazasının kodu vardır: fr ve erişilecek www.store.fr
  • İspanyol mağazasının kodu: es'dir ve erişilecek www.store.es

Nginx yapılandırma dosyanızda (büyük olasılıkla / etc / nginx / sites özellikli klasörde) yapılandırma dosyasının üstüne ekleyin:

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

daha sonra, serverblokta 3 alanı dinlemek için bildirimi ekleyin:

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

// whatever other config you get...
}

son olarak, php config (ile başlayan blok location ~ \. php $ {)

fastcgi_param MAGE_RUN_TYPE website;
fastcgi_param MAGE_RUN_CODE $mage_run_code;

satırdan önce (normalde ile başlayan diğer satırları görürsünüz fastcgi_param)

 include        fastcgi_params;

config dosyanızı kaydedin, Nginx server et voila'nızı yeniden başlatın.



0

Magento 2.2.5'te basit bir şekilde test edilmiştir

Sunucu örneğinizde bir etki alanı takma adı oluşturun domain2.com

Magento root dizininde index.php dosyasını düzenle

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);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.