Универсальный opencart config — один файл для админки и фронта

Недавно столкнулся с Opencart, и оказалось Config.php у Opencart сделан через одно место, мало того что для админки и для фронта разные файлы, так еще и отличаются они по сути одной строкой.
Если сайт поставили и он работает — это конечно пофигу, но вот когда встает вопрос о переносе на другой хостинг, то оказывается конфиг не умеет определить папку где он лежит (и это в 2017 году то), и все пути приходится прописывать вручную, что для неопытных юзеров может вылиться знатным гемором.
Дабы исправить это, я немного переписал config в сторону удобства.

Этот конфиг умеет сам определять папку в которой он лежит, всё что вам нужно это вписать данные от базы данных, сохранить, кинуть его в корень сайта и в папку /admin


<?php
//Универсальный конфиг для ОС.2.0+
//В конфиге прописываем только данные к БД, затем ложим этот конфиг в корень и в папку admin

// DB
define('DB_DRIVER', 'mysqli');
define('DB_HOSTNAME', 'localhost');
define('DB_USERNAME', 'szzd');
define('DB_PASSWORD', 'A30fA40p91I55g59');
define('DB_DATABASE', 'szzd');
define('DB_PORT', '3306');
define('DB_PREFIX', 'oc_');

//Определяем это фронт или бек.
//Если последние 5 букв = админ, то это бэк.
$is_admin=substr(getcwd(), -5);

if ($is_admin=='admin') {
//Back
// HTTP
define('HTTP_SERVER', 'http://' . $_SERVER['HTTP_HOST'] . '/admin/');
define('HTTP_CATALOG', 'http://' . $_SERVER['HTTP_HOST'] . '/');

// HTTPS
define('HTTPS_SERVER', 'http://' . $_SERVER['HTTP_HOST'] . '/admin/');
define('HTTPS_CATALOG', 'http://' . $_SERVER['HTTP_HOST'] . '/');

//Back
//DIR
//Уберем admin из пути
$path=getcwd();
$path=str_replace('/admin', '', $path);
define('DIR_ROOT', $path. '/');
//
// DIR
define('DIR_APPLICATION', DIR_ROOT.'admin/');
define('DIR_SYSTEM', DIR_ROOT.'system/');
define('DIR_IMAGE', DIR_ROOT.'image/');
define('DIR_LANGUAGE', DIR_ROOT.'admin/language/');
define('DIR_TEMPLATE', DIR_ROOT.'admin/view/template/');
define('DIR_CONFIG', DIR_ROOT.'system/config/');
define('DIR_CACHE', DIR_ROOT.'system/storage/cache/');
define('DIR_DOWNLOAD', DIR_ROOT.'system/storage/download/');
define('DIR_LOGS', DIR_ROOT.'system/storage/logs/');
define('DIR_MODIFICATION', DIR_ROOT.'system/storage/modification/');
define('DIR_UPLOAD', DIR_ROOT.'system/storage/upload/');
define('DIR_CATALOG', DIR_ROOT.'catalog/');

} else {

//Front
// HTTP
define('HTTP_SERVER', 'http://'.$_SERVER['HTTP_HOST'].'/');
// HTTPS
define('HTTPS_SERVER', 'http://'.$_SERVER['HTTP_HOST'].'/');

//Front
// DIR
define('DIR_ROOT', getcwd() . '/');
//
define('DIR_APPLICATION', DIR_ROOT.'catalog/');
define('DIR_SYSTEM', DIR_ROOT.'system/');
define('DIR_IMAGE', DIR_ROOT.'image/');
define('DIR_LANGUAGE', DIR_ROOT.'catalog/language/');
define('DIR_TEMPLATE', DIR_ROOT.'catalog/view/theme/');
define('DIR_CONFIG', DIR_ROOT.'system/config/');
define('DIR_CACHE', DIR_ROOT.'system/storage/cache/');
define('DIR_DOWNLOAD', DIR_ROOT.'system/storage/download/');
define('DIR_LOGS', DIR_ROOT.'system/storage/logs/');
define('DIR_MODIFICATION', DIR_ROOT.'system/storage/modification/');
define('DIR_UPLOAD', DIR_ROOT.'system/storage/upload/');

}

// ERRORS
//ini_set('error_reporting', E_ALL & ~E_NOTICE & ~E_WARNING & ~E_DEPRECATED);
//ini_set('display_errors', 0);
//ini_set('display_startup_errors', 0);
//ini_set('html_errors', 0);

 

Файл подходит только под Opencart 2.0. и тестировался мной много раз, пользуйтесь

Добавить комментарий

Ваш e-mail не будет опубликован.