Многосайтовость с Magento

Есть несколько путей как сделать многомагазинность, например:

  • у вас есть два доменных имени site1.ru и site2.ru и вы хотите, чтобы им соответствовали сайты Magento с аналогичными именами
  • вы хотите, чтобы по site1.mysite.ru открывался один сайт Magento, а по site2.mysite.ru - другой

Сайты site1.ru и site2.ru на одном движке

  1. В админ-панеле хостинга создаем одноименные домены и получаем две папки вида:
    /home/you_name/domains/site1.ru/public_html/
    /home/you_name/domains/site2.ru/public_html/
  2. Копируем Magento в первую и инсталлируем его
  3. В админке в разделе «Управление магазинами» создаем новый сайт и в его поле code прописываем “site2” (сайтом “site1” будет сайт, что уже есть по умолчанию - “base”). Создаем для них соответствующие Store и Store View (поэкспериментируйте, это не сложно)
  4. Копируем из папки
    /home/you_name/domains/site1.ru/public_html/magento/

    в папку

    /home/you_name/domains/site2.ru/public_html/

    два файла: index.php и .htaccess

  5. Открываем index.php и находим там:
    1. $mageFilename = 'app/Mage.php';
    2. ...
    3. ...
    4. Mage::run();

    Видоизменяем его так:

    1. $mageFilename = '/home/ndru/domains/nd0.ru/public_html/magento/app/Mage.php';
    2. ...
    3. ...
    4. Mage::run('site2','website'); # Именно слово "website", менять его ни на что не надо

Проверяем, разбираемся с путями, заработало! Идем пить пиво на радостях.

Сайты site1.mysite.ru и site2.mysite.ru на одном движке

Отсюда, не проверял, только перевел. Открываем index.php вашей системы, находим там:

  1. Mage::run();

Что означает, что будет вызван store «base».

Для примера, German store лежит в /de/index.php:

  1. Mage::run('german');

Если ваш index.php это точка входа для нескольких stores, код store будет вычислен из переменной окружения, например:

  1. $host = explode(':', $_SERVER['HTTP_HOST']);
  2. switch ($host[0]) {
  3. case 'german.example.com':
  4.   $store = 'german';
  5.   break;
  6.  
  7. default:
  8.   $store = 'base';
  9. }
  10.  
  11. Mage::run($store);

Заметьте, что .htaccess должен быть в каждой папке, где есть index.php.

Важное: если вы хотите, чтобы ваши stores/websites имели общие куки (cookies) вы должны заполнить “Session Cookie management” раздел в Web Configuration to /. Иначе, каждый store будет иметь свои собственные куки, что, например, означает, что если вы пытаетесь использовать куки “store” (что содержит текущий storecode) для локализации, вы можете не получить доступ к указанным куки и восстановленный storecode может содержать случайную информацию.

Для магазинов на субдомене можно сделать так же красиво, как автор предложил в первой части этой статьи, единственное отличие

Mage::run('site2','group');



 

Magento 2 GitHub Repository

Magento Job Board - Some sort of tag line goes here

Latest Posts| View all Jobs