About This File
В OpenCart есть досадное недоразумение. Мультимагазин поддерживается только на фронтенде. И разработчики пытаются с помощью костылей заставить свои модули работать с мультимагазинами.
Что делает этот модуль?
Добавляет в админ.часть переменную с указанием магазина, и после его установки ЛЮБОЙ модуль начинает поддерживать мультимагазины.
Зачем мне это?
За тем, чтобы разные модули вели себя по-разному на разных витринах. Например, у Вас есть мультимагазин с 2 доменами, на один из них допускаются только лица 18+, Вы можете поставить модуль, который будет показывать всплывающее окно с подтверждением возраста, а с помощью этого фикса он будет появляться только на 1м домене.
Установка и использование
После установки будут доступны админки с разных доменов, т.е. если раньше у Вас был site.ru/admin/, и при попытке зайти на site2.ru/admin/ Вас перекидывало на site.ru/admin/, то теперь у каждого домена будет "своя" админка. И все изменения сделанные там, будут касаться настроек только этого домена.
Как бонус, можно будет улучшить безопасность, для каждого домена (магазина) назначить своих менеджеров, которые будут иметь доступ только к данному магазину и не тронут всю систему.
РЕШЕНИЕ ПРОБЛЕМ
Бывает, что файлы /admin/index.php и /admin.config.php создаются, но не работают (запускается оригинальная версия). В таком случае в эти файлы надо внести правки самостоятельно. Есть 2 варианта:
1 вариант: Заливаем файл multistore_admin_fix_core.ocmod.xml, обновляем кэш дополнений. Затем идем в /system/storage/modification/admin, копируем оттуда эти 2 файла и заменяем ими оригинальные в папке /admin
2 вариант: Открываем /admin/config.php и меняем
<?php// HTTP
define('HTTP_SERVER', 'http://ваш.сайт/admin/');
define('HTTP_CATALOG', 'http://ваш.сайт/');
// HTTPS
define('HTTPS_SERVER', 'http://ваш.сайт/admin/');
define('HTTPS_CATALOG', 'http://ваш.сайт/');
на
<?php$host = $_SERVER['HTTP_HOST'];
// HTTP
define('HTTP_SERVER', 'http://'.$host.'/admin/');
define('HTTP_CATALOG', 'http://ваш.сайт/');
// HTTPS
define('HTTPS_SERVER', 'http://'.$host.'/admin/');
define('HTTPS_CATALOG', 'http://ваш.сайт/');
А также редактируем /admin/index.php
// Settings$query = $db->query("SELECT * FROM " . DB_PREFIX . "setting WHERE store_id = '0'");
меняем на
// Storeif (isset($_SERVER['HTTPS']) && (($_SERVER['HTTPS'] == 'on') || ($_SERVER['HTTPS'] == '1'))) {
$store_query = $db->query("SELECT * FROM " . DB_PREFIX . "store WHERE REPLACE(`ssl`, 'www.', '') = '" . $db->escape('https://' . str_replace('www.', '', $_SERVER['HTTP_HOST']) . rtrim(dirname($_SERVER['PHP_SELF']), '/.\\') . '/') . "'");
} else {
$store_query = $db->query("SELECT * FROM " . DB_PREFIX . "store WHERE REPLACE(`url`, 'www.', '') = '" . $db->escape('http://' . str_replace('www.', '', $_SERVER['HTTP_HOST']) . rtrim(dirname($_SERVER['PHP_SELF']), '/.\\') . '/') . "'");
}
if ($store_query->num_rows) {
$config->set('config_store_id', $store_query->row['store_id']);
} else {
$config->set('config_store_id', 0);
}
// Settings
$query = $db->query("SELECT * FROM " . DB_PREFIX . "setting WHERE store_id = '0' OR store_id = '" . (int)$config->get('config_store_id') . "' ORDER BY store_id ASC");
Совместимость
Пока модуль проверен только на ocStore 2.1.0.2.1, пробуйте и сообщайте мне о совместимости и багах, буду дополнять.