Тема: Плагин Images thumbs

Plugin Name:    Images thumbs
Plugin URI:        http://strawberry.goodgirl.ru/forum/post/17938/
Description:    Тумборез для вывода картинки в шаблоне.
Version:        0.1
Application:     Strawberry
Author:            cmd
Author URI:        http://www.workshop200.com

Пример вызова в шаблоне:

<?=small_image($tpl['post']['img'], 120); ?>

- будет показывать миниатюры с шириной 120px

<?=small_image($tpl['post']['img'], 80, $type = 'height'); ?>

- будет показывать миниатюры с высотой 80px

Пример использования в шаблоне:

<? if ($tpl['post']['img']) { ?>
            <img src="<?=small_image($tpl['post']['img'], 100, $type = 'height'); ?>" style="float: left; margin: 5px; heigth: 100px;" />
            <? } ?>

Установка:
1. Скачать файл в папку с плагинами и включить плагин в админке.
2. В show.news.php добавить строку

$tpl['post']['img']           = $row['avatar'];

DOWNLOAD

Подробности тут.

10 часов, 31 минуту и 59 секунд спустя:


______________________________________________________________

UPDATED: Я понимаю, что прошло всего 12 часов, но все равно неприятно... Хоть кто-то мог посмотреть на код и сказать: Евгений, нахуя Вы все так усложняете?

И правда... чего это я...

Выкладываю версию 0.2, которая намного фунциональнее и понятнее, чем версия 0.1.

DOWNLOAD Images thumbs v. 0.2

Вот функция small_image с атрибутами:

small_image($file_image, $file_size, $rgb = 0xFFFFFF, $quality = 100)

Я поменял вызов. Теперь вызывать так:

<?=small_image($tpl['post']['img'], '100x150'); ?>

Если указать один из параметров 0 (ноль), то масштабирование будет только по второму параметру. Например:

<?=small_image($tpl['post']['img'], '100x0'); ?>

выдаст миниатюру с шириной 100px и произвольной высотой.

Кроме того при желании можно указывать цвет фона (т.н. поля) - переменная $rgb и качество миниатюры ($quality).

10 часов, 47 минут и 39 секунд спустя:

Кеширование работает ОК. Пойду куплю себе медаль.

Отредактировано cmd (19 Apr 2011 05:49:36)

Post's attachments

thumbs.php 9.06 kb, 74 downloads since 2011-04-18 

thumbs.php 8.99 kb, 80 downloads since 2011-04-19 

Есть такая штука как IceStrawberry 1.04 b. Можете юзать на свой страх и риск... или слямзить что-то. Мне фиолетово.

Re: Плагин Images thumbs

И не обязательно ругаться )))
Я честно глянул на код... глянул и не более. т.к. разбираться нет сил ))
Я прикручиваю плагин SPAW последней версии к клубнике. Не просто прикручиваю а полностью интегрирую.
Далее туже учесть ждет СKEditor и FCKEditor. Ну и с wisywig чего нить придумаю....

Здесь молодость бродит крылато, и старость не клонит голов...
Демо площадка Strawberry 1.2 - заходим и тестируем!

Re: Плагин Images thumbs

оффтоп

Miksar, а что значит последняя версия SPAW? Я пол года назад списывался с разработчиком и он мне сказал, что проект можно считать закрытым и обновлений можно не ждать.

Есть такая штука как IceStrawberry 1.04 b. Можете юзать на свой страх и риск... или слямзить что-то. Мне фиолетово.

Re: Плагин Images thumbs

Последняя - значит - последняя на сегодняшний день ))
Воот ))

Здесь молодость бродит крылато, и старость не клонит голов...
Демо площадка Strawberry 1.2 - заходим и тестируем!

Re: Плагин Images thumbs

Спасибо за скрипт! cmd, Что отследил:

верия 0.2
файл: thumbs.php

1. строка 116

$file_folder = $_SERVER['DOCUMENT_ROOT']."/admin/data/upimages";

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

2. не желает ставить картинку во время добавления статьи. Добавляет только при редактировании.

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

4. вами указано, что строка

<?=small_image($tpl['post']['img'], '100x150'); ?>
 

- создаст миниатюру с шириной 100px и высотой 150px

но в реальности она создаст миниатюру, пропорциональную исходной картинке, не растягивая и не сжимая её - а просто пропорционально уменьшая её до размеров меньшей из сторон - в заданных пределах 100x150

А вообще, плагином и при этом, можно пользоваться. Еще раз спасибо!

Отредактировано triggger (08 May 2011 03:57:50)

Версия Strawberry 1.1.1 с ЧПУ

Re: Плагин Images thumbs

1. строка 116
у каждого юзера свой путь к папке upimages - это следует указать в комментариях к настройке скрипта. Чтобы каждый мог отредактировать эту строку.

Специально оставил этот недочет. Хотел узнать, когда кто-то посмотрит в код внимательно.

не желает ставить картинку во время добавления статьи. Добавляет только при редактировании.

Уточните, пожалуйста: Вы выбираете картинку, а она не записывается или вообще нет поля выбора?

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

Да, все миниатюры хранятся в папках с названием, которое соответствует размеру миниатюры. Если Вы меняете размер миниатюры, то создаются новые миниатюры в новой папке. Смысл в том, что одна картинка может иметь неограниченное количество миниатюр, которые выводятся в разных шаблонах.

вами указано, что строка

<?=small_image($tpl['post']['img'], '100x150'); ?>
 

- создаст миниатюру с шириной 100px и высотой 150px

но в реальности она создаст миниатюру, пропорциональную исходной картинке, не растягивая и не сжимая её - а просто пропорционально уменьшая её до размеров меньшей из сторон - в заданных пределах 100x150

Тут все правильно указано. Миниатюра создается 100х150. Но уменьшение осуществляется пропорционально. Если, например, вы уменьшаете картинку с размером 200х200 до размера 100х150, то картинка будет уменьшена по меньшей стороне, а справа и слева будут белые (или не белые - цвет вы можете задать) поля. Т.е. размер изображения на картинке будет 100х100, а 25px сверху и снизу будут занимать поля. Т.е. размер картинки будет 100х150, но размер изображения 100х100. Понятно объяснил?

Я не вижу смысла в непропорциональном уменьшении картинок... Они же кривыми будут...

4 минуты и 17 секунд спустя:

P.S. Если Вам не нужны белые поля, то используйте масштабирование по одному параметру, например по ширине:

<?=small_image($tpl['post']['img'], '100x0'); ?>

Тогда белых (или другого цвета) полей не будет.

Отредактировано cmd (08 May 2011 11:44:13)

Есть такая штука как IceStrawberry 1.04 b. Можете юзать на свой страх и риск... или слямзить что-то. Мне фиолетово.

Re: Плагин Images thumbs

Уточните, пожалуйста: Вы выбираете картинку, а она не записывается или вообще нет поля выбора?

Выбираю картинку, а она не записывается. Поле выбора есть. Получается что добавить картинку в пост я могу уже только после публикации новости в режиме редактирования.

Т.е. размер изображения на картинке будет 100х100, а 25px сверху и снизу будут занимать поля. Т.е. размер картинки будет 100х150, но размер изображения 100х100. Понятно объяснил?

Я не вижу смысла в непропорциональном уменьшении картинок... Они же кривыми будут...

Спасибо понял. А про кривые картинки, иногда в этом может быть смысл smile Но только иногда smile


Еще вопрос возник. А можно ли изменить папку для картинок, со стандартной data/upimages на какую-то другую, типа data/upimages2 ? Ну чтоб работа через images.mdu загрузчика картинок для постов, не пересекалась с работой загрузчика для превьюшек. И для этого раскидывать такие картинки по разным папкам.

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

upd
Хотя когда работа происходит в одном интерфейсе - есть и свои удобства. Превьшки можно делать уже из загруженных картинок.

upd
Почистил все картинки, чтобы понять как взаимодействуют два этих загрузчика. В качестве images.mdu - пользуюсь версией - http://strawberry.goodgirl.ru/forum/post/18027/#p18027 с изменением - http://strawberry.goodgirl.ru/forum/post/18027/#p18027

Обнаружил, что когда захожу через ваш плагин, все картинки имеющиеся в общем интерфейсе картинок (загруженные через images.mdu), тут же приобретают автоматически превьюшки в папке

upimages/100х100

Это еще без того, что я размешаю эти превьюшки - в статье. Даже при удалении этой картинки из любого варианта загрузчика, в этой папке картинки все равно остаются.  Исследую дальше.

upd
В общем понял, как можно корректно совмещать работу этих двух загрузчиков. Просто удобно загружать картинки из  images.mdu, а превьюшки формировать для постов прямо из уже загруженных изображений, с помощью вашего скрипта.

Я просто закомментировал строки:


<form action="<?=$PHP_SELF; ?>" method="post" enctype="multipart/form-data">
<b><?=t('Добавить изображение'); ?></b>
<table border="0" cellpading="0" cellspacing="0" width="300" class="panel">
 <tr>
  <td>

<script language="javascript">
f = 0
function file_uploader(which){
if (which < f) return
    f ++
    d = document.getElementById('image_'+f)
    d.innerHTML = '<input type="file" name="image['+f+']" id="image_'+f+'" value="" onchange="file_uploader('+f+');" /><br /><span id="image_'+(f+1)+'">'
}
document.writeln('<input type="file" name="image[0]" value="" onchange="file_uploader(0);" /><br />')
document.writeln('<span id="image_1"></span>')
</script>

   <label for="overwrite"><input type="checkbox" name="overwrite" id="overwrite"><?=t('Перезаписать, если картинка уже есть?'); ?></label><br />
   <input type="submit" value="<?=t('Загрузить'); ?>">
</table>

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

Так совмещать эти два плагина намного удобнее.

Отредактировано triggger (08 May 2011 20:09:17)

Версия Strawberry 1.1.1 с ЧПУ

Re: Плагин Images thumbs

Обнаружил, что когда захожу через ваш плагин, все картинки имеющиеся в общем интерфейсе картинок (загруженные через images.mdu), тут же приобретают автоматически превьюшки в папке 100x100

Посмотрите на 244 строку плагина:

    $insert = '<img src="'.small_image($file, '100x100').'" alt="" border="0" style="margin: 0 auto;">';

Это она создает превьюшки, когда Вы смотрите список картинок при добавлении\редактировании. Её можно удалить и не будет превьюшек.

3 минуты и 29 секунд спустя:

Выбираю картинку, а она не записывается. Поле выбора есть. Получается что добавить картинку в пост я могу уже только после публикации новости в режиме редактирования.

В addnews.mdu есть строка

run_actions('new-save-entry');

.
Она должна встречаться 2 раза. Вот так:

    run_actions('new-save-entry'); // тут

    $sql->insert(array(
    'table'  => 'news',
    'values' => array(
                'date'     => $added_time,
                'author'   => $member['username'],
                'title'    => replace_news('add', $title),
                'short'    => strlen(replace_news('add', $short_story)),
                'full'     => strlen(replace_news('add', $full_story)),
                'category' => $category,
                'url'      => ($url ? namespace($url) : namespace(totranslit($title))),
                'hidden'   => cute_get_rights('approve_news')
                )
    ));

    $sql->insert(array(
    'table'  => 'story',
    'values' => array(
                'post_id' => $id,
                'short'   => replace_news('add', $short_story),
                'full'    => replace_news('add', $full_story)
                )
    ));

    run_actions('new-save-entry'); // и тут

Вторая на месте?

Отредактировано cmd (08 May 2011 20:08:13)

Есть такая штука как IceStrawberry 1.04 b. Можете юзать на свой страх и риск... или слямзить что-то. Мне фиолетово.

Re: Плагин Images thumbs

Это она создает превьюшки, когда Вы смотрите список картинок при добавлении\редактировании. Её можно удалить и не будет превьюшек.

Поглядите последний upd прошлого поста. Сделал его после вашего комментария. На самом деле теперь от этой функции не хочу отказываться, т.к. именно оттуда они подгружаются для просмотра в интерфейсе превьюшек. И таким образом только улучшают удобство использования.

Остается неудобно, когда их стираешь, то они не стираются из папки 100х100, и из других папок превьюшек -. Удаляются только из папки upimages.

Но с другой стороны, исходя из содержания последнего upd моего прошлого поста, мне удобнее и удаление тоже

<a href="javascript:confirmDelete('?plugin=tpl_images&amp;action=remove&amp;image=<?=$file.$query_string; ?>')"><?=t('[удалить]'); ?>

закомментировать. Т.к. из второго плагина удаляет картинку из бОльшего числа папок, которые он тоже создает.

(P.S. кстати - тут в исходнике не было закрывающего тега </a> - это не критично, я так понял?)


В addnews.mdu есть строка

run_actions('new-save-entry');

Она должна встречаться 2 раза.

Да есть такой код. До знака не проверял, но вроде один и тот же.

Отредактировано triggger (08 May 2011 20:48:58)

Версия Strawberry 1.1.1 с ЧПУ

Re: Плагин Images thumbs

Чтобы решить проблему с добавлением можно попробовать так переделать функцию записи в БД:

function tpl_img_save(){
global $sql;
static $i = 0;

    $i++;

    if ($i == 2) {
        $sql->update(array(
        'table'  => 'news',
        'where'  => array('id = '.$_POST['id'].''),
        'values' => array('avatar' => $_POST['tpl_img'])
        ));
    }
}

40 секунд спустя:

Угумс... удаление превью непродуманно.

Есть такая штука как IceStrawberry 1.04 b. Можете юзать на свой страх и риск... или слямзить что-то. Мне фиолетово.

11

Re: Плагин Images thumbs

cmd пишет:

Чтобы решить проблему с добавлением можно попробовать так переделать функцию записи в БД:


Поменял:

function tpl_img_save(){
global $sql;

    $sql->update(array(
    'table'  => 'news',
    'where'  => array('id = '.$_POST['id'].''),
    'values' => array('avatar' => $_POST['tpl_img'])
    ));
}

на

function tpl_img_save(){
global $sql;
static $i = 0;

    $i++;

    if ($i == 2) {
        $sql->update(array(
        'table'  => 'news',
        'where'  => array('id = '.$_POST['id'].''),
        'values' => array('avatar' => $_POST['tpl_img'])
        ));
    }
}

При таком варианте картинка выбирается, но вообще не сохраняется. Ни при создании, ни при редактировании новости. Откатил изменение - обратно.

Отредактировано triggger (08 May 2011 22:29:40)

Версия Strawberry 1.1.1 с ЧПУ

Re: Плагин Images thumbs

Тю, я добавил в addnews.mdu строку и забыл

    $sql->insert(array(
    'table'  => 'news',
    'values' => array(
                'date'     => $added_time,
                'author'   => $member['username'],
                'title'    => replace_news('add', $title),
                'short'    => strlen(replace_news('add', $short_story)),
                'full'     => strlen(replace_news('add', $full_story)),
            'avatar'   => $_POST['tpl_img'], // эту строку добавили!
                'category' => $category,
                'url'      => ($url ? naspace($url) : naspace(totranslit($title))),
                'hidden'   => cute_get_rights('approve_news'),
                )
    ));

Вот и ответ

Есть такая штука как IceStrawberry 1.04 b. Можете юзать на свой страх и риск... или слямзить что-то. Мне фиолетово.

13

Re: Плагин Images thumbs

Спасибо! Внес изменения - все отлично заработало!

Версия Strawberry 1.1.1 с ЧПУ

Re: Плагин Images thumbs

Товарищи, а подскаждите, если при запуске плагина не отображаются превьюшки (ссылки вставить-удалить - есть, а превьюшек нет). Папка 100x100 - создаётся...
(в базовом загрузчике опция "Делать уменьшеную копию?" есть, но неактивна...


В чем может быть причина?

Отредактировано yukon (19 Apr 2012 23:06:21)

Re: Плагин Images thumbs

Что значит "не отображаются"? $tpl['post']['img'] не объявляется? или объявляется, но сами изображения не создаются? Если первый вариант - хз (надо дебаг делать). Если второй вариант - проверьте поддерживает ли хостер библиотеку GD.

Есть такая штука как IceStrawberry 1.04 b. Можете юзать на свой страх и риск... или слямзить что-то. Мне фиолетово.