Как удалить из атрибута src картинки товара протокол http

Правила раздела: faq.php?mode=okay
Модератор: Модераторы

wolf
wolf

Сообщение #1 wolf » 27.12.2016, 18:18

Для корректного отображения сайта по протоколу https необходимо убрать из атрибута src для загрузки фото товара http. Необходимо, чтобы путь отображался src="//адрес сайта/files/products/0123.jpg. Сейчас отображается src="http://адрес сайта/files/products/0123.jpg. Какие варианты?

korshunov
korshunov
Репутация: 148
Сообщения: 1862
Зарегистрирован: 03.12.2015
С нами: 8 лет 4 месяца
Skype

Сообщение #2 korshunov » 28.12.2016, 05:53

Видимо, PHP скрипт OKAYCMS у Вас неверно определяет текущий протокол. Наиболее вероятная причина - нестандартная работа сервера.
А вообще варианты могут быть разные. Точно - надо смотреть конкретно работу сайта на Вашем сервере.

zyxer M
zyxer M
Возраст: 32
Репутация: 77
Сообщения: 419
Зарегистрирован: 03.02.2016
С нами: 8 лет 2 месяца
Откуда: Днепр

Сообщение #3 zyxer » 28.12.2016, 08:15

Как вариант (немного костыльный) в файле api/Config.php заменить строки

Код: Выделить всё

$protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https'? 'https' : 'http';
if($_SERVER["SERVER_PORT"] == 443)
    $protocol = 'https';
elseif (isset($_SERVER['HTTPS']) && (($_SERVER['HTTPS'] == 'on') || ($_SERVER['HTTPS'] == '1')))
    $protocol = 'https';
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')
    $protocol = 'https';

на

Код: Выделить всё

$protocol = 'https';
Всё сказанное мной, является лично моим мнением, и не является официальной позицией OkayCMS

korshunov
korshunov
Репутация: 148
Сообщения: 1862
Зарегистрирован: 03.12.2015
С нами: 8 лет 4 месяца
Skype

Сообщение #4 korshunov » 28.12.2016, 10:01

Это, конечно, работать будет, но уж очень грубый способ.
А иногда требуется, чтоб часть сайта работала по http, а часть по https, и в такой ситуации совсем не годится...

wolf
wolf

Сообщение #5 wolf » 28.12.2016, 17:22

Думаю, проблема не в сервере.
Адрес формируется здесь (файл product.tpl:

Код: Выделить всё

{* Большое фото товара *}
                  <img class="fn-img" src="{$product->image->filename|resize:300:300}" alt="{$product->name|escape}" title="{$product->name|escape}"/>

А именно - посредством переменной

Код: Выделить всё

{$product->image->filename|resize:300:300}
.
Как убрать из переменной отображение протокола?

korshunov
korshunov
Репутация: 148
Сообщения: 1862
Зарегистрирован: 03.12.2015
С нами: 8 лет 4 месяца
Skype

Сообщение #6 korshunov » 29.12.2016, 06:32

api/Design.php, public function resize_modifier

Можно еще в api/Config.php завести вместо $this->vars['root_url'] новую переменную и ее использовать в адресации...

wolf
wolf

Сообщение #7 wolf » 29.12.2016, 10:28

Спасибо за рекомендации, но никак не получается в адресации src="http://адрес сайта/files/products/0123.jpg. убрать вывод протокола http: , чтобы выводило src="//адрес сайта/files/products/0123.jpg. Что не сделаю - выдает синтаксическую ошибку кода.
Нужна помощь!!!!

Добавлено спустя 42 минуты 24 секунды:
Очень нужна помощь! Как изменить абсолютные ссылки на медиа-контент (фото товара, бренды) на относительные пути???

m1hasik M
Аватара
m1hasik M
Возраст: 32
Репутация: 31
Сообщения: 200
Зарегистрирован: 12.11.2015
С нами: 8 лет 5 месяцев
Откуда: Днепр
Skype

Сообщение #8 m1hasik » 29.12.2016, 11:48

wolf писал(а):Спасибо за рекомендации, но никак не получается в адресации src="http://адрес сайта/files/products/0123.jpg. убрать вывод протокола http: , чтобы выводило src="//адрес сайта/files/products/0123.jpg. Что не сделаю - выдает синтаксическую ошибку кода.
Нужна помощь!!!!


Очень нужна помощь! Как изменить абсолютные ссылки на медиа-контент (фото товара, бренды) на относительные пути???
В файле api/Config.php уберите переменную $protocol

Старый код вот такой

Код: Выделить всё

 $this->vars['protocol'] = $protocol;
        $this->vars['root_url'] = $protocol.'://'.rtrim($_SERVER['HTTP_HOST']);
        if(!empty($subdir)) {
            $this->vars['root_url'] .= '/'.$subdir;
        }


Смените код на вот такой

Код: Выделить всё

 $this->vars['protocol'] = $protocol;
        $this->vars['root_url'] = '//'.rtrim($_SERVER['HTTP_HOST']);
        if(!empty($subdir)) {
            $this->vars['root_url'] .= '/'.$subdir;
        }

wolf
wolf

Сообщение #9 wolf » 29.12.2016, 11:57

m1hasik писал(а):В файле api/Config.php уберите переменную $protocol
m1hasik, огромное спасибо за подсказку! Как раз то, что нужно!!!


Название раздела: Вопросы по работе с OkayCMS
Правила раздела: faq.php?mode=okay

Быстрый ответ


Введите код в точности так, как вы его видите. Регистр символов не имеет значения.
Код подтверждения

   

Вернуться в «Вопросы по работе с OkayCMS»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 80 гостей