Многосайтовость с Magento
Есть несколько путей как сделать многомагазинность, например:
- у вас есть два доменных имени site1.ru и site2.ru и вы хотите, чтобы им соответствовали сайты Magento с аналогичными именами
- вы хотите, чтобы по site1.mysite.ru открывался один сайт Magento, а по site2.mysite.ru - другой
Сайты site1.ru и site2.ru на одном движке |
- В админ-панеле хостинга создаем одноименные домены и получаем две папки вида:
/home/you_name/domains/site1.ru/public_html/
/home/you_name/domains/site2.ru/public_html/
- Копируем Magento в первую и инсталлируем его
- В админке в разделе «Управление магазинами» создаем новый сайт и в его поле
codeпрописываем “site2” (сайтом “site1” будет сайт, что уже есть по умолчанию - “base”). Создаем для них соответствующиеStoreиStore View(поэкспериментируйте, это не сложно) - Копируем из папки
/home/you_name/domains/site1.ru/public_html/magento/
в папку
/home/you_name/domains/site2.ru/public_html/
два файла:
index.phpи.htaccess - Открываем
index.phpи находим там:- $mageFilename = 'app/Mage.php';
- ...
- ...
- Mage::run();
Видоизменяем его так:
- $mageFilename = '/home/ndru/domains/nd0.ru/public_html/magento/app/Mage.php';
- ...
- ...
- Mage::run('site2','website'); # Именно слово "website", менять его ни на что не надо
Проверяем, разбираемся с путями, заработало! Идем пить пиво на радостях.
Сайты site1.mysite.ru и site2.mysite.ru на одном движке |
Отсюда, не проверял, только перевел. Открываем index.php вашей системы, находим там:
- Mage::run();
Что означает, что будет вызван store «base».
Для примера, German store лежит в /de/index.php:
- Mage::run('german');
Если ваш index.php это точка входа для нескольких stores, код store будет вычислен из переменной окружения, например:
- $host = explode(':', $_SERVER['HTTP_HOST']);
- switch ($host[0]) {
- case 'german.example.com':
- $store = 'german';
- break;
- default:
- $store = 'base';
- }
- Mage::run($store);
Заметьте, что .htaccess должен быть в каждой папке, где есть index.php.
Важное: если вы хотите, чтобы ваши stores/websites имели общие куки (cookies) вы должны заполнить “Session Cookie management” раздел в Web Configuration to /. Иначе, каждый store будет иметь свои собственные куки, что, например, означает, что если вы пытаетесь использовать куки “store” (что содержит текущий storecode) для локализации, вы можете не получить доступ к указанным куки и восстановленный storecode может содержать случайную информацию.
Для магазинов на субдомене можно сделать так же красиво, как автор предложил в первой части этой статьи, единственное отличие
Mage::run('site2','group');

