Это вольный перевод вот этой статьи. Статья предназначена для людей, знакомых с Magento, поэтому многие элементарные вещи из оригинальной статьи были опущены. Существует несколько реализаций решения этой задачи:
В результате получится несколько магазинов, использующих один и тот же код, и управляемых из одной админки.
Для начала необходимо создать корневую категорию для нового магазина, сделать ее активной и установить значение атрибута Is Anchor в Yes. Далее переходим в раздел админки System -> Manage Stores и создаем новые Website, Store и Store View. Подробней на примере:
Website:
Store:
Store View:
Дополнительные магазины создаются аналогично.
Теперь необходимо указать базовые URL’ы для нового магазина. Переходим в раздел System -> Configuration. Current Configuration Scope (расположен слева вверху) меняем значение Default Config на Shoes. На вкладке Web в секциях Secure и Unsecure указываем Base URL. Для каждого случая этот URL будет различным, для примера:
Завершающий слеш в каждом 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();
на
Для большего количества магазинов нужно код изменить следующим образом:
В общем-то и все. После этих манипуляций магазин будет доступен по адресу 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:
Теперь магазин будет доступен по адресу http://shoes.mall.com/.
В итоге мы получаем несколько магазинов, управляемых одной установленной системой с любым содержимым, т.е. контент этих магазинов может быть связан между собой, либо не иметь ничего общего. Каждый может использовать тот метод, который ему удобней, результат, в конечном итоге, будет идентичным. Основное преимущество тут – это удобство управления несколькими магазинами и экономия времени менеджеров магазинов.
- Как поддиректории основного сайта, например,
- 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-х видео:
- http://www.magentocommerce.com/magento-on-the-fly/multiple-sites/
- http://www.magentocommerce.com/magento-on-the-fly/multiple-sites2/
Доменные имена
Так как, по сути, у нас будет несколько доменных имен, привязанных к одному серверу, на котором установлена Magento, то придется править уже оригинальный файл index.php. Итак, заменим строку
Mage::run();
на
- switch($_SERVER['HTTP_HOST']) {
- case 'shoes.com':
- case 'www.shoes.com':
- Mage::run('shoes', 'website');
- break;
- default:
- Mage::run();
- break;
- }
Для большего количества магазинов нужно код изменить следующим образом:
- switch($_SERVER['HTTP_HOST']) {
-
- // Shoes.com
- case 'shoes.com':
- case 'www.shoes.com':
- Mage::run('shoes', 'website');
- break;
-
- // Hats.com
- case 'hats.com':
- case 'www.hats.com':
- Mage::run('hats', 'website');
- break;
-
- // Shirts.com (default store)
- default:
- Mage::run();
- break;
- }
В общем-то и все. После этих манипуляций магазин будет доступен по адресу 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/.
В итоге мы получаем несколько магазинов, управляемых одной установленной системой с любым содержимым, т.е. контент этих магазинов может быть связан между собой, либо не иметь ничего общего. Каждый может использовать тот метод, который ему удобней, результат, в конечном итоге, будет идентичным. Основное преимущество тут – это удобство управления несколькими магазинами и экономия времени менеджеров магазинов.