Промостикеры Opencart 2.3 по https
В рамках большой работы над магазином нужно было в том числе сделать возможной нормальную работу сайта одновременно по обоим протоколам - http и https. Одна из причин, почему работа с https была неполноценной - пути к изображениям стикеров генерились исключительно с http в ссылке. Этот фикс исправляет этот косяк.
Везде где есть
'image' => HTTP_SERVER . 'image/' . $sticker['image']
сделать в целом вот так:
if ($this->request->server['HTTPS']) {
$prot_server = HTTPS_SERVER;
} else {
$prot_server = HTTP_SERVER;
}
foreach ($stickers as $sticker) {
$data['stickers'][] = array(
'position' => $sticker['position'],
'image' => $prot_server . 'image/' . $sticker['image']
);
}
Заменил во всех этих файлах, сразу ничего не поменялось. Говорят, в версии 2.3.0.2.6 баг исправлен, но 2.3.0.2.6 Pro нет, и судя по всему, не будет.
Сработало добавление вот такого кода в config.php
// Check if SSL
if ((isset($_SERVER['HTTPS']) && (($_SERVER['HTTPS'] == 'on') || ($_SERVER['HTTPS'] == '1'))) || $_SERVER['SERVER_PORT'] == 443) {
$https = true;
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' || !empty($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on') {
$https = true;
} else {
$https = false;
}
if ($https) {
define('HTTP_SERVER', 'https://shop.solarhome.ru/');
define('HTTPS_SERVER', 'https://shop.solarhome.ru/');
} else {
define('HTTP_SERVER', 'http://shop.solarhome.ru/');
define('HTTPS_SERVER', 'http://shop.solarhome.ru/');
}
Опубликовано