Перейти к содержанию

1 изображение

Информация о файле

В 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'");

меняем на

// Store

if (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, пробуйте и сообщайте мне о совместимости и багах, буду дополнять.



  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.