Jump to content

MultiStore Admin FIX

Version number: 0.2
   (2 reviews)
Sign in to follow this  

1 Screenshot

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

меняем на

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


  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.