Перейти к содержимому


Фото
* * * * * 10 голосов

Убираем Токен Из Адреса Изображения


  • Чтобы отвечать, сперва войдите на форум
93 ответов в теме

#1 DaVinci

DaVinci
  • Фрилансер
  • 676 сообщений
  • Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:SimplaDev.ru

Опубликовано 07.10.2014 - 09:50

В стандарной симпле адрес изображения имеет вот такой адре:

http://simpla/files/...8b8ad7e132e5e9f

 

Задача получить адрес без $token-на

http://simpla/files/...570.300x300.jpg

 

но при это запретить произвольную нарезку изображений тех размеров которые на заданы в настройках сайта.

 

Размеры изображений задаются через шаблон. Потому можно запомнить необходимые размеры в настройках.

 

в Design.php добавляем код

        $size = ($width?$width:0).'x'.($height?$height:0).($set_watermark?"w":'');
        $image_sizes = array();
        if($this->settings->image_sizes)
            $image_sizes = explode('|',$this->settings->image_sizes);
        if(!in_array($size, $image_sizes)){
            $image_sizes[] = $size;
            $this->settings->image_sizes = implode('|',$image_sizes);
        }

 

В Image.php добавляем код

        $size = ($width?$width:0).'x'.($height?$height:0).($set_watermark?"w":'');
        $image_sizes = array();
        if($this->settings->image_sizes)
            $image_sizes = explode('|',$this->settings->image_sizes);
        if(!in_array($size, $image_sizes)){
            header("http/1.0 404 not found");
            exit();
        }

 

в resize/resize.php

/*
if(!$simpla->config->check_token($filename, $token))
	exit('bad token');
*/

 

 

Более подробно смотрите на видео

 

 

Смотрите другие доработки в моем профиле

 

Хотите сказать спасибо? Вам сюда   :)


Изменено: DaVinci, 05.04.2017 - 15:25


#2 mart

mart

    Дружу с Симплой

  • Фрилансер
  • 1 331 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Venlo

Опубликовано 07.10.2014 - 10:00

Забыли упомянуть про настроку - $this->settings->image_sizes
В админке в разделе "Настройки" обавляем поле image_sizes, где через | (вертикальную черту) вносим все допустимые размеры, включая те, что используются в админке (50x50 и 100x100).
Т.е. получится строка вида 50x50|100x100|300x300

#3 DaVinci

DaVinci
  • Фрилансер
  • 676 сообщений
  • Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:SimplaDev.ru

Опубликовано 07.10.2014 - 10:04

Забыли упомянуть про настроку - $this->settings->image_sizes
В админке в разделе "Настройки" обавляем поле image_sizes, где через | (вертикальную черту) вносим все допустимые размеры, включая те, что используются в админке (50x50 и 100x100).
Т.е. получится строка вида 50x50|100x100|300x300

 

не обязательно, потому что все изображения проходят через шаблон.

 

задача токена запретить нарезку изображений произвольных размеров через браузер. данное решение с этим справляется.



#4 Kors

Kors
  • Фрилансер
  • 3 522 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Россия

Опубликовано 07.10.2014 - 10:06

Очень симпатичное решение!  Жаль, нельзя автору плюсик поставить...



#5 mart

mart

    Дружу с Симплой

  • Фрилансер
  • 1 331 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Venlo

Опубликовано 07.10.2014 - 10:08

Да, понял Вашу задумку :) Извините. Просто Вы использовали системную переменную, вот и сбило с толку.

#6 DaVinci

DaVinci
  • Фрилансер
  • 676 сообщений
  • Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:SimplaDev.ru

Опубликовано 07.10.2014 - 10:11

Да, понял Вашу задумку :) Извините. Просто Вы использовали системную переменную, вот и сбило с толку.

 

безусловно можно использовать эту настройку и даже нужно.

 

К примеру - часто при создании шаблонов верстальщики балуются с размерами. после остается много мусора. зная размеры созданных изображений, имея соответствующий функционал, можно удалять именно те которые уже не нужны.



#7 Noxter

Noxter
  • Пользователь
  • 5 709 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 07.10.2014 - 15:20

Насколько я понял изменения в файле api/Image.php нужны для того чтобы не было произвольной нарезки изображений?

#8 mart

mart

    Дружу с Симплой

  • Фрилансер
  • 1 331 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Venlo

Опубликовано 08.10.2014 - 11:36

Еще один момент - я (не знаю как другие) порой использую конструкции без передачи высоты, т.е. что-то типа

{$image->filename|resize:400}

Так вышеуказанные поправки не отрабатывали - выбрасывало на 404.

Выход нашел в принудительном указании нулевого размера. В файле api/Image.php (~105 строка) меняем

        $width = $matches[2];                    // ширина будущего изображения
        $height = $matches[3];                    // высота будущего изображения

на

        $width = $matches[2] ? $matches[2] : 0;                    // ширина будущего изображения
        $height = $matches[3] ? $matches[3] : 0;                    // высота будущего изображения


#9 drakulitkas

drakulitkas
  • Пользователь
  • 212 сообщений
  • Дизайн, Верстка
  • Версия CMS:2.x

Опубликовано 09.10.2014 - 08:32

Спасибо за бесплатное решение!!!



#10 Karen

Karen
  • Пользователь
  • 186 сообщений
  • Заказчик, Пользователь
  • Версия CMS:2.x

Опубликовано 16.01.2015 - 01:08

В стандарной симпле адрес изображения имеет вот такой адре:

http://simpla/files/...8b8ad7e132e5e9f

 

Задача получить адрес без $token-на

http://simpla/files/...570.300x300.jpg

 

но при это запретить произвольную нарезку изображений.

 

Размеры изображений задаются через шаблон. Потому можно запомнить необходимые размеры в настройках.

 

в Design.php добавляем код

        $size = $width.'x'.$height;
        $image_sizes = array();
        if($this->settings->image_sizes)
            $image_sizes = explode('|',$this->settings->image_sizes);
        if(!in_array($size, $image_sizes)){
            $image_sizes[] = $size;
            $this->settings->image_sizes = implode('|',$image_sizes);
        }

 

В Image.php добавляем код

        $size = $width.'x'.$height;
        $image_sizes = array();
        if($this->settings->image_sizes)
            $image_sizes = explode('|',$this->settings->image_sizes);
        if(!in_array($size, $image_sizes)){
            header("http/1.0 404 not found");
            exit();
        }

 

 

Более подробно смотрите на видео

 

Извините, а зачем убирать токен с изображений? Это как-то влияет на поисковые системы?



#11 swap

swap
  • Пользователь
  • 11 сообщений
  • Программирование, Верстка, Заказчик
  • Версия CMS:2.x

Опубликовано 19.01.2015 - 06:07

В стандарной симпле адрес изображения имеет вот такой адре:

http://simpla/files/...8b8ad7e132e5e9f

 

Задача получить адрес без $token-на

http://simpla/files/...570.300x300.jpg

 

но при это запретить произвольную нарезку изображений.

 

Размеры изображений задаются через шаблон. Потому можно запомнить необходимые размеры в настройках.

 

в Design.php добавляем код

        $size = $width.'x'.$height;
        $image_sizes = array();
        if($this->settings->image_sizes)
            $image_sizes = explode('|',$this->settings->image_sizes);
        if(!in_array($size, $image_sizes)){
            $image_sizes[] = $size;
            $this->settings->image_sizes = implode('|',$image_sizes);
        }

 

В Image.php добавляем код

        $size = $width.'x'.$height;
        $image_sizes = array();
        if($this->settings->image_sizes)
            $image_sizes = explode('|',$this->settings->image_sizes);
        if(!in_array($size, $image_sizes)){
            header("http/1.0 404 not found");
            exit();
        }

 

 

Более подробно смотрите на видео

 

А как подключить чтобы alt к картинке брался из-за заголовка товара?



#12 Rash

Rash
  • Пользователь
  • 450 сообщений
  • Дизайн, Верстка
  • Версия CMS:2.x
  • Откуда:Russian Federation

Опубликовано 19.01.2015 - 09:45

А как подключить чтобы alt к картинке брался из-за заголовка товара?

 

alt="{$product->name|escape}"


#13 swap

swap
  • Пользователь
  • 11 сообщений
  • Программирование, Верстка, Заказчик
  • Версия CMS:2.x

Опубликовано 19.01.2015 - 20:21

alt="{$product->name|escape}"

Скажите пожалуйста это куда вставлять



#14 Noxter

Noxter
  • Пользователь
  • 5 709 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 19.01.2015 - 21:24

Скажите пожалуйста это куда вставлять

В файлы main.tpl, products.tpl, product.tpl в нужное место.

#15 DaVinci

DaVinci
  • Фрилансер
  • 676 сообщений
  • Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:SimplaDev.ru

Опубликовано 28.03.2015 - 23:32

кто поставил, отпишитесь - полезное дополнение, нет?)


Изменено: DaVinci, 28.03.2015 - 23:34


#16 Maksclub

Maksclub

    Помогаю с Симплой

  • Фрилансер
  • 1 119 сообщений
  • Дизайн, Программирование, Верстка, Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Москва

Опубликовано 01.04.2015 - 20:17

кто поставил, отпишитесь - полезное дополнение, нет?)

Да очень полезное!!! Большое спасибо!


Изменено: Maksclub, 01.04.2015 - 20:18


#17 Noxter

Noxter
  • Пользователь
  • 5 709 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 01.04.2015 - 20:20

+ Дополнения так то, что поисковики начнут картинки хорошо индексировать, а плагины для кнопок соцсетей наконец смогут подтягивать картинку товара без лишних манипуляций.
Проверено, работает.

#18 Денис

Денис
  • Пользователь
  • 41 сообщений
  • Заказчик
  • Версия CMS:2.x

Опубликовано 23.04.2015 - 01:01

Спасибо, то что искал.

 

Появился вопрос: можно ли делать картинки на выходе переименованные относительно названия товара используя чпу.


Например, загрузили картинку оригинал с названием 4ec3bbe56f65a.jpg у товара Кондиционер Electrolux FVNB 50M, а на выходе получаем kondicioner_electrolux_fvnb_50m.300x300.jpg , если указали ресайз 300 на 300


Если у товара множество картинок, в конце, после 50m, подставляем _2, _3, _4 и т. д.

 

Готов поощрить.


Изменено: Денис, 23.04.2015 - 01:16


#19 FDA

FDA
  • Пользователь
  • 45 сообщений
  • Пользователь
  • Версия CMS:2.x
  • Откуда:РФ

Опубликовано 23.09.2015 - 23:48

кто поставил, отпишитесь - полезное дополнение, нет?)

Дополнение просто супер полезное!!!



#20 FDA

FDA
  • Пользователь
  • 45 сообщений
  • Пользователь
  • Версия CMS:2.x
  • Откуда:РФ

Опубликовано 26.09.2015 - 02:14

В стандарной симпле адрес изображения имеет вот такой адре:

http://simpla/files/...8b8ad7e132e5e9f

 

Задача получить адрес без $token-на

http://simpla/files/...570.300x300.jpg

 

но при это запретить произвольную нарезку изображений.

 

Размеры изображений задаются через шаблон. Потому можно запомнить необходимые размеры в настройках.

 

в Design.php добавляем код



        $size = $width.'x'.$height;
        $image_sizes = array();
        if($this->settings->image_sizes)
            $image_sizes = explode('|',$this->settings->image_sizes);
        if(!in_array($size, $image_sizes)){
            $image_sizes[] = $size;
            $this->settings->image_sizes = implode('|',$image_sizes);
        }

 

В Image.php добавляем код



        $size = $width.'x'.$height;
        $image_sizes = array();
        if($this->settings->image_sizes)
            $image_sizes = explode('|',$this->settings->image_sizes);
        if(!in_array($size, $image_sizes)){
            header("http/1.0 404 not found");
            exit();
        }

 

Более подробно смотрите на видео

 

 

Хотите сказать спасибо? Вам сюда   :)

Только что обнаружил.

При добавлении нового товара картинки не появляются.

Это у меня у одного так?






0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых