Utwórz Multi Witrynę / Sklepy w magento 2

16

Czy możesz podać źródło / procedury tworzenia wielu stron internetowych w Magento 2. Mam google na ten temat, ale żadna ze źródeł / procedur nie podała ścieżki tworzenia wielu stron / sklepów.

saravanavelu
źródło
Możesz również skonfigurować wielostanowiskowy przełącznik w interfejsie, np. Przełącznik języka i przełącznik sklepu.
Sprawdź ten link ... i działa dobrze. Kliknij tutaj na przykład
Virang Jethva

Odpowiedzi:

24

Utworzono wiele witryn w Magento. Kroki tworzenia multistore w panelu administracyjnym są takie same jak w Magento1.x. Nie zapomnij zmienić podstawowego adresu URL i bezpiecznego adresu URL dla nowej witryny / sklepu. Po wprowadzeniu zmian w panelu administracyjnym wykonaj następujące czynności,

1) Utwórz nowy folder w katalogu głównym Magento i skopiuj pliki index.phporaz .htaccessz katalogu głównego Magento do nowego folderu.

2) Edytuj index.phpplik znajdujący się w nowym folderze

Zastąpić:

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

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

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

$bootstrap->run($app);

Z:

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

A także zaktualizuj bootstrap.php, uwzględniając ścieżkę, jak poniżej,

Zastąpić:

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

Z:

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

3) Utwórz łącza uproszczone w nowym folderze

 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 

Zobacz to

Wyczyść var/generation,var/cache and pub/staticpliki i przeprowadź instalację statyczną.

saravanavelu
źródło
Myślę, że musimy skopiować .htaccessrównież (wraz z index.php) z katalogu głównego do nowego folderu.
Andrea,
1
czy możesz skonfigurować multistore bez wartości kodowania na stałe w index.php lub htaccess przy użyciu dodawania kodów sklepów do adresów URL? wydaje się nie działać na magento2
Claudiu Creanga
Czy próbowałeś to zrobić z sugerowaną konfiguracją środowisk produkcyjnych i wskazując katalog główny na [Magento root] / pub?
Facundo Capua
Czy mieliście jakieś problemy ze stosowaniem tego samego niestandardowego motywu na obu stronach? Moja druga strona ładuje zasoby z ../ en_US / ... zamiast ../en_GB/ .. jakiś pomysł, co może być?
Juliano Vargas
Spróbuj wdrożyć na konkretny temat z kodem językowym
saravanavelu
4

dzięki temu zasobowi

w backendzie Magento, przejdź do Sklepy> Wszystkie sklepy Stwórz tutaj swoją architekturę z różnymi stronami internetowymi / sklepami / widokami sklepów Zwróć uwagę na kody witryn, na przykład,

  • Sklep w USA ma kod: my i będzie dostępny przez www.store.com
  • Francuski sklep ma kod: fr i będzie dostępny przez www.store.fr
  • Hiszpański sklep ma kod: es i będzie dostępny przez www.store.es

w pliku konfiguracyjnym Nginx (najprawdopodobniej w folderze / etc / nginx / sites-enable) dodaj na górze pliku konfiguracyjnego:

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

następnie w serverbloku dodaj deklarację, aby słuchać 3 domen:

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

// whatever other config you get...
}

na koniec, w konfiguracji php (blok zaczynający się od location ~ \. php $ {), dodaj

fastcgi_param MAGE_RUN_TYPE website;
fastcgi_param MAGE_RUN_CODE $mage_run_code;

przed linią (normalnie zobaczysz inne linie zaczynające się od fastcgi_param)

 include        fastcgi_params;

zapisz plik konfiguracyjny, uruchom ponownie serwer Nginx et voila.

Memy
źródło
0

Prosty sposób przetestowany na Magento 2.2.5

Utwórz alias domeny na przykładowym serwerze domain2.com

Edytuj plik index.php w katalogu głównym 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
źródło