IgorA100 90 Опубликовано: 2 февраля 2015 Рассказать Опубликовано: 2 февраля 2015 (изменено) Как мы знаем, в DLE есть возможность формировать два типа уменьшенных картинок, это thumbs и medium. При этом, только в самой новости можно указать какой размер картинки будет использоваться. Хорошо? Наверное да. Но как быть, если в шаблоне используется много картинок различного размера, а публикации выводятся через custom. Несколько 450х250, несколько 200х110, а несколько 100х100? Правильно, вставлять во все новости и выводить везде 450х250 и применять CSS и/или JS. Отображаться то будет нормально, но вот вес страницы становится очень большой. Вариант когда можно разрулить своими шаблонами для разных категорий не подходит в большинстве случаев с версткой custom. Я же предлагаю, непосредственно в шаблоне указывать какой размер выводить. При этом размер картинки заданный в самой публикации игнорируется! Например: [imagecustom-1]<img src="{image_thumbs-1}">[/imagecustom-1] - выведет первую картинку размером thumbs [imagecustom-1]<img src="{image_medium-1}">[/imagecustom-1][/code] - выведет первую картинку размером [b]medium[/b] [code][imagecustom-2]<img src="{image_medium-2}">[/imagecustom-2][/code] - выведет вторую картинку размером [b]medium[/b] При этом, можно указывать не только {image_thumbs-1}, но и {image_450х250-1}, при этом картинка будет выводиться из папки: ../uploads/posts/../450х250/картинка. Каким образом появятся уменьшенные картинки в папке "450х250" ? Это будет отдельная тема Сейчас есть наброски в написании скрипта перестроения картинок, например при переходе с одного шаблона другой нужно делать уменьшенные копии другого (большего или меньшего) размера. http://forum.dle-new...showtopic=67574 А вообще хочу сделать, что бы любые предварительно заданные уменьшенные копии формировались автоматом при загрузке картинок. Вот, собственно и сам код изменения: [code] if (stripos ( $tpl->copy_template, "{image_" ) !== false) { preg_match_all('#\{image_(.*)\-#isU', $tpl->copy_template, $tTyp); $arrType = array_unique($tTyp[1]); //Удалим дубли sort($arrType); //Очистим от пустот появившихся после убирания дублей $countType = count($arrType); //Кол-во разных типов $images = array(); preg_match_all('/(img|src)=("|\')[^"\'>]+/i', $row['short_story'], $media); $data=preg_replace('/(img|src)("|\'|="|=\')(.*)/i',"$3",$media[0]); foreach($data as $url) { $info = pathinfo($url); if (isset($info['extension'])) { if ($info['filename'] == "spoiler-plus" OR $info['filename'] == "spoiler-plus" ) continue; $info['extension'] = strtolower($info['extension']); if (($info['extension'] == 'jpg') || ($info['extension'] == 'jpeg') || ($info['extension'] == 'gif') || ($info['extension'] == 'png')) array_push($images, $url); } } if ( count($images) ) { $i_count=0; foreach($images as $url) { $i_count++; //Очистим УРЛ от стандартных thumbs и medium $url = str_replace( 'thumbs', "", $url ); $url = str_replace( 'medium', "", $url ); $arrURL = explode('/',$url); //Позиция, куда вставляем наш тип картинки $inputPoz = count($arrURL)-1; $n = 0; while ($n <= $countType) { $templ = $arrType[$n]; $tmparrURL = $arrURL; array_splice($tmparrURL, $inputPoz, 0, $templ); //Добавляем путь к нашей уменьшенной картинке $url = implode('/',$tmparrURL); $tpl->copy_template = str_replace( '{image_'.$templ.'-'.$i_count.'}', $url, $tpl->copy_template ); $n++; } $tpl->copy_template = str_replace( '[imagecustom-'.$i_count.']', "", $tpl->copy_template ); $tpl->copy_template = str_replace( '[/imagecustom-'.$i_count.']', "", $tpl->copy_template ); } } $tpl->copy_template = preg_replace( "#\[imagecustom-(.+?)\](.+?)\[/imagecustom-(.+?)\]#is", "", $tpl->copy_template ); $n = 0; while ($n <= $countType) { $templ = $arrType[$n]; $tpl->copy_template = preg_replace( "#\\{image_".$templ."-(.+?)\\}#i", "{THEME}/dleimages/no_image.jpg", $tpl->copy_template ); $n++; } } [/code] Данный код необходимо вставить в [b]show.custom.php[/b] после условия: [code] if (stripos ( $tpl->copy_template, "{image-" ) !== false) { .... } [/code] Можно вставить и в [b]show.short.php[/b] Изменено 2 февраля 2015 пользователем IgorA100 Цитата Ссылка на сообщение Поделиться на других сайтах
IgorA100 90 Опубликовано: 11 февраля 2015 Рассказать Опубликовано: 11 февраля 2015 (изменено) Автор Итак, реализован загрузчик кастомных изображений. Возможности: 1. Возможность создания неограниченного кол-ва уменьшаемых копий. 2. Для каждой уменьшаемой копии возможно задавать размер и варианты уменьшения. 3. Все настраивается в админке. Изменения коснулись 2х файлов engineajaxupload.php и engineclassesuploadsupload.class.php Дабы не описывать вносимые изменения, в ариве выложены оригинальные файлы от 10.4 версии с изменениями. Админка: engineincacimage.php Установка: фалы из архива залить на свой сервер. Если Вами ранее были изменены файлы engineajaxupload.php и engineclassesuploadsupload.class.php, то свои изменения нужно внести и в файлы из архива. Перейти по ссылке: Ваш_сайт/путь_к_админ_файлу/?mod=acimage, после чего в админке, в разделе сторонних модулей появится и данный модуль. После настройки в загрузчике появятся дополнительные варианты уменьшения изображений. После загрузки оригинального изображения будут наглядно видны и все обрезанные варианты, что позволяет наглядно оценить вставляемое изображение. Новые уменьшенные копии можно вставлять в свои публикации. Следует заметить, что вставляется полноценная картинка уменьшенной копии, без использования тега [thumbs, а следовательно и не будет работать стандартная ф-ция увеличения изображений. Для того, что бы такое увеличение работало по клику на уменьшенное изображение необходимо добавить в конец шаблона main.tpl следующую конструкцию: <script> $(document).ready(function(){ $('img.img_custom').each(function() { src = $(this).attr("src").split('/'); src.splice(src.length-2,1); $(this).wrap("<a class='highslide' rel='highslide' href='"+src.join('/')+"'></a>"); }); }); </script> Т.к. не получается к сообщению прикрепить файл, то разместил его тут: http://www.kentavr.c...stom_resize.zip ЗЫ: Сам ресайз происходит с использованием тулкита: http://true-coder.ru...nij-na-php.html Правда, файл AcImage.php был немного мной поправлен на предмет обработки прозрачных GIF ЗЫЗЫ: Папки enginemodulesAcImage-masterdemo и enginemodulesAcImage-masterdoc из архива не нужны для работы тулкита, их на сайт заливать не следует! Принимаются замечания и комментарии. Изменено 11 февраля 2015 пользователем IgorA100 Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.