Crear múltiples sitios web / tiendas en magento 2

15

¿Puede proporcionar la fuente / procedimientos para crear un sitio web múltiple en magento 2. Tengo un google con respecto a esto, pero ninguno de los fuente / procedimiento no proporcionó la ruta para crear un sitio web / tienda múltiple.

saravanavelu
fuente
También puede configurar un conmutador multisitio en el front end como el conmutador de idiomas y el conmutador de tienda ... consulte este enlace - stackoverflow.com/questions/39290073/…
Por favor revise este enlace ... y está funcionando bien. Haga clic aquí, por ejemplo
Virang Jethva

Respuestas:

22

Sitio web creado en magento, los pasos para crear un multinúcleo en el panel de administración son los mismos que en magento1.x. No olvide cambiar la URL base y la URL segura para el nuevo sitio web / tienda. Una vez realizados los cambios en el panel de administración, siga los pasos a continuación,

1) Cree una nueva carpeta en la raíz de magento y copie los archivos index.phpy .htaccessdesde la raíz de magento a la nueva carpeta.

2) Edite el index.phpque está en la nueva carpeta

Reemplazar:

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

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

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

$bootstrap->run($app);

Con:

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

Y también actualice bootstrap.php include path como se muestra a continuación,

Reemplazar:

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

Con:

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

3) Crear un enlace sim dentro de la nueva carpeta

 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 

Refiera esto

Borre los var/generation,var/cache and pub/staticarchivos y realice la implementación de contenido estático.

saravanavelu
fuente
Creo que tenemos que copiar .htaccesstambién (junto con index.php) desde la raíz a la nueva carpeta.
Andrea
1
¿puede configurar almacenes múltiples sin valores de codificación en index.php o htaccess usando agregar códigos de tienda a las URL? parece no funcionar en magento2
Claudiu Creanga
¿Has intentado hacer esto con la configuración sugerida para entornos de producción y apuntando la raíz web a [raíz de Magento] / pub?
Facundo Capua
¿Han tenido algún problema al aplicar el mismo tema personalizado a ambos sitios web? Mine el segundo sitio web está cargando activos de ../ en_US / ... en lugar de ../en_GB/ .. ¿alguna idea de qué podría ser?
Juliano Vargas
Intente implementar en un tema específico con código de idioma
saravanavelu
4

gracias a este recurso

en el backend de Magento, vaya a Tiendas> Todas las tiendas Cree aquí su arquitectura con diferentes sitios web / tienda / tienda Tenga en cuenta cuidadosamente los códigos del sitio web, por ejemplo,

  • La tienda de EE. UU. Tiene el código: nosotros, y se accederá a través de www.store.com
  • La tienda francesa tiene el código: fr, y se accederá a través de www.store.fr
  • La tienda española tiene código: es, y se podrá acceder a ella por www.store.es

en su archivo de configuración de Nginx (muy probablemente en la carpeta / etc / nginx / sites-enabled) agregue en la parte superior del archivo de configuración:

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

luego, en el serverbloque, agregue la declaración para escuchar los 3 dominios:

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

// whatever other config you get...
}

Por último, en la configuración de php (el bloque que comienza con location ~ \. php $ {), agregue

fastcgi_param MAGE_RUN_TYPE website;
fastcgi_param MAGE_RUN_CODE $mage_run_code;

antes de la línea (normalmente verá otras líneas que comienzan con fastcgi_param)

 include        fastcgi_params;

guarde su archivo de configuración, reinicie su servidor Nginx y listo.

Memes
fuente
0

Manera simple probada en magento 2.2.5

Cree un alias de dominio en su servidor ejemplo domain2.com

Edite el archivo index.php en la raíz de 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
fuente