Создать мульти-сайт / магазины в magento 2

16

Можете ли вы предоставить источник / процедуры для создания нескольких веб-сайтов в magento 2. У меня есть Google по этому поводу, но ни один из источника / процедуры не предоставил путь для создания нескольких веб-сайтов / магазинов.

saravanavelu
источник
Вы также можете настроить многоканальный коммутатор во внешнем интерфейсе, например, языковой и магазинный коммутатор. См. Эту ссылку - stackoverflow.com/questions/39290073/…
Пожалуйста, проверьте эту ссылку ... и она работает нормально. Нажмите здесь, например,
Виранг Джетва

Ответы:

24

Создание мульти-сайта в magento. Действия по созданию мульти-магазина в админ-панели такие же, как в magento1.x. Не забудьте изменить базовый и безопасный URL для нового сайта / магазина. После внесения изменений в панели администратора выполните следующие действия:

1) Создать новую папку в корневом каталоге Magento и скопировать index.phpи .htaccessфайлы Magento корня в новую папку.

2) Редактировать index.phpкоторый находится в новой папке

Заменить:

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

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

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

$bootstrap->run($app);

С:

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

А также обновите bootstrap.php, включив путь, как показано ниже,

Заменить:

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

С:

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

3) Создайте симлинки внутри новой папки

 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 

Отослать это

Пожалуйста, очистите var/generation,var/cache and pub/staticфайлы и выполните развертывание статического содержимого.

saravanavelu
источник
Я думаю, что мы должны скопировать .htaccessтакже (вместе с index.php) из корня в новую папку.
Андреа
1
Можете ли вы настроить мультимагазины без жесткого кодирования значений в index.php или htaccess с помощью добавления кодов магазинов в URL-адреса? Кажется, не работает над magento2
Крянгэ
Вы пытались сделать это с помощью предлагаемой конфигурации для производственных сред и указали webroot на [Magento root] / pub?
Факундо Капуа
У вас, ребята, были проблемы с применением одной и той же пользовательской темы на обоих сайтах? Мой второй сайт загружает ресурсы из ../en_US / ... вместо ../en_GB/ .. есть идеи, что может быть?
Джулиано Варгас
Попробуйте развернуть на определенную тему с языковым кодом
saravanavelu
4

благодаря этому ресурсу

в бэкэнде Magento перейдите в «Магазины»> «Все магазины». Создайте здесь свою архитектуру с различными веб-сайтами / магазинами / магазинами. Внимательно следите, например, за кодами веб-сайтов:

  • У магазина США есть код: us, и к нему будет обращаться www.store.com
  • Французский магазин имеет код: fr и будет доступен по адресу www.store.fr
  • Испанский магазин имеет код: es, и к нему будет обращаться www.store.es

в конфигурационном файле Nginx (скорее всего, в папке / etc / nginx / sites-enabled) добавьте в начало конфигурационного файла:

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

затем в serverблоке добавьте объявление для прослушивания 3 доменов:

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

// whatever other config you get...
}

наконец, в конфиге php (блок начинается с location ~ \. php $ {), добавьте

fastcgi_param MAGE_RUN_TYPE website;
fastcgi_param MAGE_RUN_CODE $mage_run_code;

перед строкой (обычно вы увидите другие строки, начинающиеся с fastcgi_param)

 include        fastcgi_params;

сохраните файл конфигурации, перезапустите сервер Nginx и вуаля.

Мемы
источник
0

Простой способ протестирован на magento 2.2.5

Создание псевдонима домена на вашем сервере пример domain2.com

Отредактируйте файл index.php в корне 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
источник