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

Тема в разделе "DLE", создана пользователем E-body, 25 мар 2012.

Информация :
Актуальная версия DataLife Engine 11.1
( Final Release v.11.1 | Скачать DataLife Engine | Скачать 11.1 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 10.0 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Модераторы: killoff
  1. E-body

    E-body

    Регистр.:
    6 сен 2007
    Сообщения:
    979
    Симпатии:
    315
    Версия dle 9.4 и 9.5
    Подскажите как в краткой вывести маленькую картинку (которая берется из новости первая или следующая, а если нет то заглушка noimg.jpg) слево или справо от текста?
    Важна сама суть как это возможно может стандартными возможностями или модом?
    скрин
    [​IMG]


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

    Решение нашел, насчет работы на последних версиях незнаю.
    /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
    http://pastebin.com/RgfcRvTM

    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 strtolowerend($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);
        }
     
    ?>
     
  2. zilon

    zilon

    Регистр.:
    30 июл 2011
    Сообщения:
    370
    Симпатии:
    147
    если я правельно понял, то надо зайти в админке Список всех разделов >> Настройки вывода новостей >> Выравнивание картинок по умолчанию и выбрать справа, слева или по центру.

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

    а если картнки нету то я не знаю как сделать чтоб ничего не отображалось...
     
    Because нравится это.
  3. E-body

    E-body

    Регистр.:
    6 сен 2007
    Сообщения:
    979
    Симпатии:
    315
    Нет. Предложенный вами вариант хоть и стандартный но это значит что и в краткой и в полной будут мелкие изображения позиционированы, а нужно в дизайне картинку маленькую отдельно от текста, вот пример на скрине:
    [​IMG]

    примеры на сайте:
     
  4. Forza.Baron

    Forza.Baron

    Регистр.:
    26 янв 2012
    Сообщения:
    175
    Симпатии:
    76
    через доп.поле можно сделать: Имя доп.поле - 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 и всё будеть ОК
     
    E-body нравится это.
  5. E-body

    E-body

    Регистр.:
    6 сен 2007
    Сообщения:
    979
    Симпатии:
    315
    Не подходит.

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

    п.с. перекопаю пабликовские шаблоны и всетаки найду решение. поскольку стандартного видимо нет.
     
  6. Forza.Baron

    Forza.Baron

    Регистр.:
    26 янв 2012
    Сообщения:
    175
    Симпатии:
    76
    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 ) ) {
    $countintval($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 количества символов. При этом обрезание текста происходит до последнего логического слова, а не обрывает текст на середине слова. Тем самым вы получаете возможность более расширенного оформления публикации популярных новостей на сайте.
    Аналогично этого можно и для фулстори
     
    DiMk@™ и E-body нравится это.
  7. E-body

    E-body

    Регистр.:
    6 сен 2007
    Сообщения:
    979
    Симпатии:
    315
    Спасибо, в итоге мы привели в теме 4 рабочих варианта как можно вывести мини картинку отдельно от текста.
    п.с. каждому свой вариант подойдет, но склоняюсь больше к тому что в первом посте с настройками
    --------------------------------
    Поставил на 9.5 вариант тот что с настройками но в итоге пропали короткие новости. Пусто на сайте вмесо кратких новостей, а полная есть и если смотреть страницу в исходном коде тоже ничего - подскажите что не так.
    Прикладываю сорс на пастебине - DLE 9.5 ../enginne/modules/show.short.php
    http://pastebin.com/zTzn0LXM :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];
    }
     
  8. knurko

    knurko Создатель

    Регистр.:
    9 фев 2013
    Сообщения:
    9
    Симпатии:
    0
    а кто знает как {image-x} сделать кликабельным , что бы при клике открывался оригинал картинки ? не с этой папки /thumbs/ а оригинал!