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

    Это вольный перевод вот этой статьи. Статья предназначена для людей, знакомых с 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/.

    В итоге мы получаем несколько магазинов, управляемых одной установленной системой с любым содержимым, т.е. контент этих магазинов может быть связан между собой, либо не иметь ничего общего. Каждый может использовать тот метод, который ему удобней, результат, в конечном итоге, будет идентичным. Основное преимущество тут – это удобство управления несколькими магазинами и экономия времени менеджеров магазинов.
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 2
    • 0
      И последнее, что нужно сделать – создать символьные ссылки на все основные директории Magento
      религия не позволяет изменить unsecure/secure base url в System->Config->Web для каждого конкретного сторвью?
      • 0
        Может быть и позволяет. Вообще, многие вещи (не все конечно) в Magento можно сделать несколькими способами. Так же если вы обратитесь к оригиналу статьи, можете там увидеть дополнительную информацию, которая, возможно, вас заинтересует (или не заинтересует), т.к. я часть статьи опустил, по прчинам, указанным в начале этого топика.

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