Crie vários sites / lojas no magento 2

15

Você pode fornecer a origem / procedimentos para criar um site múltiplo no magento 2. Eu tenho um google sobre isso, mas nenhuma fonte / procedimento não forneceu o caminho para criar um site / loja multi.

saravanavelu
fonte
Você também pode configurar vários local switcher em front-end como switcher linguagem e loja switcher .. enviamos esta ligação - stackoverflow.com/questions/39290073/...
Por favor, verifique este link ... e está funcionando bem. Clique aqui por exemplo
Virang Jethva 26/04

Respostas:

22

Criado site múltiplo no magento, as etapas para criar um armazenamento múltiplo no painel de administração são as mesmas do magento1.x. Não se esqueça de alterar o URL base e o URL seguro para o novo site / loja. Depois de fazer alterações no painel do administrador, siga as etapas abaixo,

1) Crie uma nova pasta no magento root e copie os arquivos index.phpe .htaccessdo magento root para a nova pasta.

2) Edite o index.phpque está na nova pasta

Substituir:

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

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

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

$bootstrap->run($app);

Com:

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

E também atualize o caminho de inicialização do bootstrap.php, conforme abaixo,

Substituir:

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

Com:

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

3) Crie um link simbólico dentro da nova pasta

 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 

Consulte isto

Limpe os var/generation,var/cache and pub/staticarquivos e faça a implantação do conteúdo estático.

saravanavelu
fonte
Eu acho que temos que copiar .htaccesstambém (junto com index.php) da raiz para a nova pasta.
Andrea
11
você pode configurar multistores sem valores codificados em index.php ou htaccess usando adicionar códigos de loja a URLs? parece não funcionar em magento2
Claudiu Creanga
Você já tentou fazer isso com a configuração sugerida para ambientes de produção e apontou o webroot para [Magento root] / pub?
Facundo Capua
Vocês tiveram algum problema ao aplicar o mesmo tema personalizado nos dois sites? O meu segundo site está carregando ativos de ../en_US / ... em vez de ../en_GB/ .. alguma idéia do que poderia ser?
Juliano Vargas
Tente implantar no tema específico com código de idioma
saravanavelu
4

graças a este recurso

no back-end do Magento, vá para Stores> Todas as lojas Crie aqui sua arquitetura com diferentes sites / loja / visualização de loja Observe com atenção os códigos do site, por exemplo,

  • A loja dos EUA tem o código: us e será acessada por www.store.com
  • A loja francesa tem o código: fr e será acessada por www.store.fr
  • A loja espanhola tem código: es e será acessada por www.store.es

no seu arquivo de configuração do Nginx (provavelmente na pasta / etc / nginx / sites-enabled), adicione na parte superior do arquivo de configuração:

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

em seguida, no serverbloco, adicione a declaração para ouvir os três domínios:

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

// whatever other config you get...
}

por último, na configuração do php (o bloco que começa com location ~ \. php $ {), adicione

fastcgi_param MAGE_RUN_TYPE website;
fastcgi_param MAGE_RUN_CODE $mage_run_code;

antes da linha (você normalmente verá outras linhas começando com fastcgi_param)

 include        fastcgi_params;

salve seu arquivo de configuração, reinicie o servidor Nginx e pronto.

Nao
fonte
0

Maneira simples testada em magento 2.2.5

Crie um alias de domínio no seu servidor, exemplo domain2.com

Edite o arquivo index.php na raiz do 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
fonte