Как стать автором
Поиск
Написать публикацию
Обновить

Как создать несколько магазинов, используя одну установку Magento

Время на прочтение4 мин
Количество просмотров11K
Это вольный перевод вот этой статьи. Статья предназначена для людей, знакомых с Magento, поэтому многие элементарные вещи из оригинальной статьи были опущены. Существует несколько реализаций решения этой задачи:
  • Как поддиректории основного сайта, например,
    • mall.com/shoes
    • mall.com/shirts
  • Использование разных доменных имен, например,
    • shoes.com
    • shirts.com
  • Использование поддоменов основного сайта, например,
    • mall.com
    • shoes.mall.com
    • shirts.mall.com

В результате получится несколько магазинов, использующих один и тот же код, и управляемых из одной админки.

Добавление еще одного магазина в Magento


Для начала необходимо создать корневую категорию для нового магазина, сделать ее активной и установить значение атрибута Is Anchor в Yes. Далее переходим в раздел админки System -> Manage Stores и создаем новые Website, Store и Store View. Подробней на примере:

Website:
  • Имя – Shoes
  • Код – shoes

Store:
  • Имя – Main Store
  • Из списка Website выбираем Shoes
  • Из списка Root Category выбирает корневую категорию, созданную ранее.

Store View:
  • Из списка Store выбираем Main Store
  • Имя — English (не принципиально, можно написать, что угодно)
  • Код – shoes_en
  • Status – Enabled

Дополнительные магазины создаются аналогично.

Теперь необходимо указать базовые URL’ы для нового магазина. Переходим в раздел System -> Configuration. Current Configuration Scope (расположен слева вверху) меняем значение Default Config на Shoes. На вкладке Web в секциях Secure и Unsecure указываем Base URL. Для каждого случая этот URL будет различным, для примера:
  • Поддиректории – http://mall.com/shoes/
  • Для доменных имен 2-го уровня http://shoes.com/
  • Для доменных имен 3-го уровня http://shoes.mall.com/

Завершающий слеш в каждом URL’е обязателен.

Для того, чтобы можно было уже обращаться по этим URL’ам нужно сделать следующее:

Поддиректори


Итак, нужно, чтобы наш магазин находился в подиректории основного сайта.

Для этого необходимо в корне Magento создать подкаталог shoes и скопировать туда файлы .htaccess и index.php из корневого каталога Magento. После чего нужно отредактировать файл index.php. Ищем строку $mageFilename = 'app/Mage.php' и указываем правильный путь к файлу Mage.php. В данном случае это $mageFilename = '../app/Mage.php'. Еще необходимо добавить два параметра в вызов метода Mage::run().

Исправляем

Mage::run();

на

Mage::run('shoes', 'website');

После этого можно обращаться к магазину Shoes по адресу http://mall.com/shoes/.

Очень подробно эта часть обьясняется в следующих 2-х видео:

Доменные имена


Так как, по сути, у нас будет несколько доменных имен, привязанных к одному серверу, на котором установлена Magento, то придется править уже оригинальный файл index.php. Итак, заменим строку

Mage::run();

на
  1. switch($_SERVER['HTTP_HOST']) {
  2.     case 'shoes.com':
  3.     case 'www.shoes.com':
  4.         Mage::run('shoes', 'website');
  5.     break;
  6.     default:
  7.         Mage::run();
  8.     break;
  9. }

Для большего количества магазинов нужно код изменить следующим образом:
  1. switch($_SERVER['HTTP_HOST']) {
  2.     
  3.     // Shoes.com
  4.     case 'shoes.com':
  5.     case 'www.shoes.com':
  6.         Mage::run('shoes', 'website');
  7.     break;
  8.     
  9.     // Hats.com
  10.     case 'hats.com':
  11.     case 'www.hats.com':
  12.         Mage::run('hats', 'website');
  13.     break;
  14.     
  15.     // Shirts.com (default store)
  16.     default:
  17.         Mage::run();
  18.     break;
  19. }

В общем-то и все. После этих манипуляций магазин будет доступен по адресу http://shoes.com/.

Поддомены


У нас есть основной домен mall.com, нужно поднять 2-й магазин на поддомене shoes.mall.com. Я надеюсь, что все необходимое для конфигурации поддомена уже сделано на хостинге, поэтому перейдем к созданию магазина на этом поддомене.
Как на этапе с поддиректориями необходимо скопировать файлы .htaccess и index.php из корневого каталога Magento в корневой каталог поддомена, после чего можно приступить к редактированию файла index.php. Первое, что нужно сделать – это указать в файле index.php, где лежить файл Mage.php. Итак, заменим в файле index.php, строку

$mageFilename = 'app/Mage.php';

на

$mageFilename = '../public_html/app/Mage.php';

У вас этот путь может быть другим, все зависит от расположения каталогов доменов на вашем хостинге оносительно друг друга.

Далее нужно заменить код Mage::run() на Mage::run('shoes', 'website'), чтобы движок Magento знал, какой из магазинов нужно запускать. И последнее, что нужно сделать – создать символьные ссылки на все основные директории Magento:

ln -s ../public_html/404/ ./404
ln -s ../public_html/app/ ./app
ln -s ../public_html/includes/ ./includes
ln -s ../public_html/js/ ./js
ln -s ../public_html/media/ ./media
ln -s ../public_html/report/ ./report
ln -s ../public_html/skin/ ./skin
ln -s ../public_html/var/ ./var

Теперь магазин будет доступен по адресу http://shoes.mall.com/.

В итоге мы получаем несколько магазинов, управляемых одной установленной системой с любым содержимым, т.е. контент этих магазинов может быть связан между собой, либо не иметь ничего общего. Каждый может использовать тот метод, который ему удобней, результат, в конечном итоге, будет идентичным. Основное преимущество тут – это удобство управления несколькими магазинами и экономия времени менеджеров магазинов.
Теги:
Хабы:
Всего голосов 6: ↑4 и ↓2+2
Комментарии2

Публикации

Ближайшие события