• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

Помощь Dle 9.4-9.5 - как сделать в краткой thumbnail

E-body

Мой дом здесь!
Регистрация
6 Сен 2007
Сообщения
992
Реакции
342
Версия dle 9.4 и 9.5
Подскажите как в краткой вывести маленькую картинку (которая берется из новости первая или следующая, а если нет то заглушка noimg.jpg) слево или справо от текста?
Важна сама суть как это возможно может стандартными возможностями или модом?
скрин
08ec101976223b1ef31570dd8ad1eec7.png

------------------------------------------

Решение нашел, насчет работы на последних версиях незнаю.
/engine/data/shortstory.config.php
PHP:
<?PHP
 
$shortstory = array (
 
'cssy_work' => "yes",
 
'cssy_img_width' => "170",
 
'cssy_img_height' => "125",
 
'cssy_crop_img' => "no",
 
'cssy_smalling_img' => "no",
 
'cssy_default_img' => "../../templates/skin-kakoito/img/noimage.jpg",
 
'cssy_stripslashes_text' => "yes",
 
'cssy_charshort' => "200",
 
'cssy_divide_date' => "no",
 
);
 
?>

/engine/modules/show.short.php
Для просмотра ссылки Войди или Зарегистрируйся

shortstory.tpl
HTML:
<div class="short_img">[full-link]{image}[/full-link]</div>
 
<div style="margin-right:140px;">
<div class="title">[full-link]{title}[/full-link]</div>
<div class="short_text">{short-story}</div>

/engine/modules/cropimage.php
PHP:
<?php
 
function cropImage($nw, $nh, $source, $dest)
    {
        $size = getimagesize($source);
        $w = $size[0];
        $h = $size[1];
       
        $stypeArr = explode( '.', $source );
        $stype = strtolower( end($stypeArr) );
       
        switch($stype)
        {
            case 'gif':
                $simg = imagecreatefromgif($source);
                break;
            case 'jpeg':
                $simg = imagecreatefromjpeg($source);
                break;
            case 'jpg':
                $simg = imagecreatefromjpeg($source);
                break;
            case 'png':
                $simg = imagecreatefrompng($source);
                break;
        }
       
        $dimg = imagecreatetruecolor($nw, $nh);
       
        $wm = $w/$nw;
        $hm = $h/$nh;
 
        $h_height = $nh/2;
        $w_height = $nw/2;
 
        if($w> $h)
        {
            $adjusted_width = $w / $hm;
            $half_width = $adjusted_width / 2;
            $int_width = $half_width - $w_height;
 
            imagecopyresampled($dimg,$simg,-$int_width,0,0,0,$adjusted_width,$nh,$w,$h);
        }
        elseif( ($w <$h) || ($w == $h) )
        {
            $adjusted_height = $h / $wm;
            $half_height = $adjusted_height / 2;
            $int_height = $half_height - $h_height;
 
            imagecopyresampled($dimg,$simg,0,-$int_height,0,0,$nw,$adjusted_height,$w,$h);
        }
        else
        {
            imagecopyresampled($dimg,$simg,0,0,0,0,$nw,$nh,$w,$h);
        }
 
        imagejpeg($dimg,$dest,85);
    }
 
?>
 
если я правельно понял, то надо зайти в админке Список всех разделов >> Настройки вывода новостей >> Выравнивание картинок по умолчанию и выбрать справа, слева или по центру.

Потом Список всех разделов >> Настройка работы с изображениями >> Pазмер уменьшенной копии загруженного изображения и задать например 300x300 и ещё там же параметры по умолчанию для создания уменьшенной копии изображения, выбрать по ширине или высоте.

а если картнки нету то я не знаю как сделать чтоб ничего не отображалось...
 
Нет. Предложенный вами вариант хоть и стандартный но это значит что и в краткой и в полной будут мелкие изображения позиционированы, а нужно в дизайне картинку маленькую отдельно от текста, вот пример на скрине:
08ec101976223b1ef31570dd8ad1eec7.png


примеры на сайте:
Скрытое содержимое доступно для зарегистрированных пользователей!
 
через доп.поле можно сделать: Имя доп.поле - img
на шаблоне shortstory в нужное место:
[xfgiven_img] <img src="[xfvalue_img]" height="200" width="200" style="float:left" /> [/xfgiven_img]
[xfnotgiven_img] <img src="/noimage.jpg" height="200" width="200" style="float:left" /> [/xfnotgiven_img]
Просто надо знать html и всё будеть ОК
 
Не подходит.
Настройка дополнительных полей
Для начала откройте админку сайта, зайдите в Список всех разделов, Дополнительные поля новостей
Выберите "Добавить новое поле" (справа)

Поле для картинки к новости:
Название поля – image
Описание поля – Картинка для новости
Категория - все
Тип поля – однастрока
Поставить галочку - Использовать при желании
В это поле вставялем путь к изображению, например Для просмотра ссылки Войди или Зарегистрируйся
[full-link][xfgiven_image]<img src="[xfvalue_image]" alt="{title}" />[/xfgiven_image][/full-link]


Спасибо за такой вариант, но он для сайтов которые заполняются вручную. Но требуется автоматически первая картинка или другая следующая из текста - сайты наполняю массово импортом (cd + zebroid)

п.с. перекопаю пабликовские шаблоны и всетаки найду решение. поскольку стандартного видимо нет.
 
engine\modules\show.short.php
Найдите строку
PHP:
 // Обработка дополнительных полей
if( $xfound ) {
перед вставте:
PHP:
/obrabotka image-x
        if (stripos ( $tpl->copy_template, "{image-" ) !== false) {
 
            $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'])) {
                    $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=0;
                foreach($images as $url) {
                    $i++;
                    $tpl->copy_template = str_replace( '{image-'.$i.'}', $url, $tpl->copy_template );
                    $tpl->copy_template = str_replace( '[image-'.$i.']', "", $tpl->copy_template );
                    $tpl->copy_template = str_replace( '[/image-'.$i.']', "", $tpl->copy_template );
                }
 
            }
 
            $tpl->copy_template = preg_replace( "#\[image-(.+?)\](.+?)\[/image-(.+?)\]#is", "", $tpl->copy_template );
            $tpl->copy_template = preg_replace( "#\\{image-(.+?)\\}#i", "{THEME}/dleimages/no_image.jpg", $tpl->copy_template );
 
        }
//Obrabotka image-x
 
 
//Obrabotka text-x
if ( preg_match( "#\\{text limit=['\"](.+?)['\"]\\}#i", $tpl->copy_template, $matches ) ) {
$count= intval($matches[1]);
 
$row['short_story'] = str_replace( "</p><p>", " ", $row['short_story'] );
$row['short_story'] = strip_tags( $row['short_story'], "<br>" );
$row['short_story'] = trim(str_replace( "<br>", " ", str_replace( "<br />", " ", str_replace( "\n", " ", str_replace( "\r", "", $row['short_story'] ) ) ) ));
 
if( $count AND dle_strlen( $row['short_story'], $config['charset'] ) > $count ) {
 
$row['short_story'] = dle_substr( $row['short_story'], 0, $count, $config['charset'] );
 
if( ($temp_dmax = dle_strrpos( $row['short_story'], ' ', $config['charset'] )) ) $row['short_story'] = dle_substr( $row['short_story'], 0, $temp_dmax, $config['charset'] );
 
}
 
$tpl->set( $matches[0], $row['short_story'] );
 
} else $tpl->set( '{text}', $row['short_story'] );
 
//Obrabotka text-x
Тепер вместо
[xfgiven_img] <img src="[xfvalue_img]" height="200" width="200" style="float:left" /> [/xfgiven_img]
[xfnotgiven_img] <img src="/noimage.jpg" height="200" width="200" style="float:left" /> [/xfnotgiven_img]
можете использовать
<img src="{image-1}" height="200" width="200" style="float:left" />

{image-x} - выводит URL картинок находящихся в краткой новости, где x это номер картинки в новости, например
{image-1} выведет URL первой картинки в краткой новости
[image-x] текст [/image-x] - выводят текст указанный в них только в случае если картинка с номером X присутствует в новости
если картинка нету то вместо картинки будет {THEME}\dleimages\no_image.jpg
{text} - выводит полностью краткое содержание новости
{text limit="x"} - выводит только текст краткой новости без HTML форматирования, при этом сам текст публикации обрезает до указанных X количества символов. При этом обрезание текста происходит до последнего логического слова, а не обрывает текст на середине слова. Тем самым вы получаете возможность более расширенного оформления публикации популярных новостей на сайте.
Аналогично этого можно и для фулстори
 
Спасибо, в итоге мы привели в теме 4 рабочих варианта как можно вывести мини картинку отдельно от текста.
п.с. каждому свой вариант подойдет, но склоняюсь больше к тому что в первом посте с настройками
--------------------------------
Поставил на 9.5 вариант тот что с настройками но в итоге пропали короткие новости. Пусто на сайте вмесо кратких новостей, а полная есть и если смотреть страницу в исходном коде тоже ничего - подскажите что не так.
Прикладываю сорс на пастебине - DLE 9.5 ../enginne/modules/show.short.php
Для просмотра ссылки Войди или Зарегистрируйся :nezn:

$row['short_story'] = str_replace('\\\\"', '"', $row['short_story']);

function get_img_basic($text){
preg_match('|<img(.*) src="([^"]*)"[^>]*>|is', stripslashes($text), $out); return $out[2];
}
 
а кто знает как {image-x} сделать кликабельным , что бы при клике открывался оригинал картинки ? не с этой папки /thumbs/ а оригинал!
 
Назад
Сверху