Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы » Как в предварительном просмотре (preview.tpl) отобразить full-story limit="x" и image-1?

Как в предварительном просмотре (preview.tpl) отобразить full-story limit="x" и image-1?


     22.09.2016    Общие вопросы, Шаблоны (TPL), Общие вопросы по PHP    1876

вопрос
Вебмастеры, пытаюсь сократить до минимума затраты времени на публикацию новости, и так получается, что часто пользуюсь "Предварительным просмотром" перед публикацией, но он меня подводит - не отображая информацию из этих тегов:
{image-1} и {full-story limit="400"}

Можно ли как-нибудь реализовать вывод информации из данных тегов в Предварительном просмотре?

Ответа пока нет


22 комментария

vitnet
PHP-developer

vitnet - 23 сентября 2016 10:08 -

Для тега image уже есть решение, для full-story добавьте из show.full.php

ZeN41k
Юзер

ZeN41k - 23 сентября 2016 10:19 -

Спасибо за ответ) А что именно брать из show.full.php в preview.php ? Я просто в php особо не разбираюсь(

ZeN41k
Юзер

ZeN41k - 25 сентября 2016 11:45 -

ломал голову, но всё-равно не получилось отобразить full-story limit="400" =(

ZeN41k
Юзер

ZeN41k - 30 сентября 2016 10:02 -

за 200 WMR напишите решение для full-story?

lutskboy
Эксперт

lutskboy - 30 сентября 2016 12:07 -

engine\inc preview.php
ищем

    $dle_module = "showfull";

    if ( @is_file($tpl->dir."/preview.tpl") ) $tpl->load_template('preview.tpl');
    else $tpl->load_template('fullstory.tpl');


опускаемся чуть ниже и ищем

$tpl->set('{title}', $title);


перед ним вставить


                if ( preg_match( "#\\{full-story limit=['\"](.+?)['\"]\\}#i", $tpl->copy_template, $matches ) ) {
            $count= intval($matches[1]);
            
            $full_story = preg_replace( "#<!--TBegin(.+?)<!--TEnd-->#is", "", $full_story );
            $full_story = preg_replace( "#<!--MBegin(.+?)<!--MEnd-->#is", "", $full_story );
            $full_story = preg_replace( "'\[attachment=(.*?)\]'si", "", $full_story );
            $full_story = preg_replace ( "#\[hide\](.+?)\[/hide\]#ims", "", $full_story );
                
            $full_story = str_replace( "</p><p>", " ", $full_story );
            $full_story = strip_tags( $full_story, "<br>" );
            $full_story = trim(str_replace( "<br>", " ", str_replace( "<br />", " ", str_replace( "\n", " ", str_replace( "\r", "", $full_story ) ) ) ));

            if( $count AND dle_strlen( $full_story, $config['charset'] ) > $count ) {

                $full_story = dle_substr( $full_story, 0, $count, $config['charset'] );
                    
                if( ($temp_dmax = dle_strrpos( $full_story, ' ', $config['charset'] )) ) $full_story = dle_substr( $full_story, 0, $temp_dmax, $config['charset'] );
                
            }

            $tpl->set( $matches[0], $full_story );

        }

работает на дле 11.1
на пиво можно сюда R277416226311

ZeN41k
Юзер

ZeN41k - 30 сентября 2016 13:29 -

работает) отправил на пиво) еще 100р отправлю, если поможете отобразить full-story limit="x" в поиске)

по идее этот код нужно куда-то тоже в нужное место вставить)

lutskboy
Эксперт

lutskboy - 30 сентября 2016 14:17 -

открыть engine\modules search.php
и заменить
CHAR_LENGTH(" . PREFIX . "_post.full_story) as full_story

на

" . PREFIX . "_post.full_story


дальше открыть engine\modules show.custom.php и перед
    
$row['title'] = stripslashes( $row['title'] );
$tpl->set( '{title}', $row['title'] );

вставить

        if ( preg_match( "#\\{full-story limit=['\"](.+?)['\"]\\}#i", $tpl->copy_template, $matches ) ) {

        $count= intval($matches[1]);
        
        $row['full_story'] = preg_replace( "#<!--TBegin(.+?)<!--TEnd-->#is", "", $row['full_story'] );
        $row['full_story'] = preg_replace( "#<!--MBegin(.+?)<!--MEnd-->#is", "", $row['full_story'] );
        $row['full_story'] = preg_replace( "'\[attachment=(.*?)\]'si", "", $row['full_story'] );
        $row['full_story'] = preg_replace ( "#\[hide\](.+?)\[/hide\]#ims", "", $row['full_story'] );
                
        $row['full_story'] = str_replace( "</p><p>", " ", $row['full_story'] );
        $row['full_story'] = strip_tags( $row['full_story'], "<br>" );
        $row['full_story'] = trim(str_replace( "<br>", " ", str_replace( "<br />", " ", str_replace( "\n", " ", str_replace( "\r", "", $row['full_story'] ) ) ) ));
    
        if( $count AND dle_strlen( $row['full_story'], $config['charset'] ) > $count ) {
                        
            $row['full_story'] = dle_substr( $row['full_story'], 0, $count, $config['charset'] );
                        
            if( ($temp_dmax = dle_strrpos( $row['full_story'], ' ', $config['charset'] )) ) $row['full_story'] = dle_substr( $row['full_story'], 0, $temp_dmax, $config['charset'] );
                    
        }
    
        $tpl->set( $matches[0], $row['full_story']);
    
    }

lutskboy
Эксперт

lutskboy - 30 сентября 2016 14:27 -

за пиво спс :)

ZeN41k
Юзер

ZeN41k - 30 сентября 2016 14:28 -

=))) может тогда уже и с image-1 в предварительном просмотре разберемся чего не работает на DLE 11.1 ?) ещё 100р скину)

ZeN41k
Юзер

ZeN41k - 30 сентября 2016 14:05 -

vitnet, только что проверил ваше решение для image-1 и оно не работает вообще в engine/preview.php, но добавив в engine/inc/preview.php оно якобы заработало только отображает картинку no-image.. Всё делал по инструкции, в данном случае "str_replace( '/thumbs', '', $url ), заменял на $url, так как нужно отображение картинки с /thumbs/

lutskboy
Эксперт

lutskboy - 30 сентября 2016 14:44 -

engine\inc preview.php
ищем


    if ( @is_file($tpl->dir."/preview.tpl") ) $tpl->load_template('preview.tpl');
    else $tpl->load_template('shortstory.tpl');

чуть ниже будет

$tpl->set('{title}', $title);

после него вставить

        if (stripos ( $tpl->copy_template, "{image-" ) !== false) {

            $images = array();
            preg_match_all('/(img|src)=("|\')[^"\'>]+/i', $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-minus" ) 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=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 );
    
        }

lutskboy
Эксперт

lutskboy - 30 сентября 2016 14:44 -

дальше ниже ищем

    $dle_module = "showfull";

    if ( @is_file($tpl->dir."/preview.tpl") ) $tpl->load_template('preview.tpl');
    else $tpl->load_template('fullstory.tpl');


и еще ниже чуток. будет так


    $tpl->set('{title}', $title);

    if ( preg_match( "#\\{title limit=['\"](.+?)['\"]\\}#i", $tpl->copy_template, $matches ) ) {


и перед ним вставить


        if (stripos ( $tpl->copy_template, "{image-" ) !== false) {

            $images = array();
            preg_match_all('/(img|src)=("|\')[^"\'>]+/i', $full_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-minus" ) 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=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 );
    
        }

ZeN41k
Юзер

ZeN41k - 30 сентября 2016 15:11 -

всё сделал по инструкции - всё-равно отображается no_image.jpg ,
а должна быть картинка ввида site.ru/uploads/posts/2016-09/thumbs/image.jpg

кеш чистил!

lutskboy
Эксперт

lutskboy - 30 сентября 2016 15:14 -

значит картинки на самом деле нет
загрузите другую
в полную и короткую новость

ZeN41k
Юзер

ZeN41k - 30 сентября 2016 15:27 -

всё-равно отображается no_image. Добавляю в краткую новость картинку, вот вид (убираю галочку увеличивать при клике):
[img]http://site.ru/uploads/posts/2016-09/thumbs/image.jpg[/img]


и вывожу через image-1

вот preview.php - https://vk.com/doc162888945_438022818?hash=a3dd7a7d3a676134b6&dl=ee0d582c401921240f

lutskboy
Эксперт

lutskboy - 30 сентября 2016 15:32 -

ну тогда нужно смотреть конкретно в вашем случае.
у меня норм.

ZeN41k
Юзер

ZeN41k - 30 сентября 2016 15:35 -

а prewiew.php правильный? загрузите , пожалуйста, свой, там всё-равно данных конфиденциальных нету)

lutskboy
Эксперт

lutskboy - 30 сентября 2016 15:38 -


ZeN41k
Юзер

ZeN41k - 30 сентября 2016 15:46 -

работает)) скинул на таранку к пиву)

lutskboy
Эксперт

lutskboy - 30 сентября 2016 15:50 -

thanks for fish and beer smile

ZeN41k
Юзер

ZeN41k - 30 сентября 2016 18:05 -

Кстати, понял почему оно иногда отображает, а иногда не отображает, в общем, если я ввёл какой-нибудь текст в поле "Полное описание", то оно показывает no_image.jpg, если удалю всё полное описание, то показывает image-1 (то есть, норм)
то есть, картинку я вставляю в краткое описание и всё, оно для этого у меня и служит...

можно ли как-нибудь допилить хак?)

ZeN41k
Юзер

ZeN41k - 1 октября 2016 14:09 -

помогите пожалуйста)

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх