Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Шаблоны (TPL) » Вывести теги в краткую новость

Вывести теги в краткую новость


     12.01.2014    Шаблоны (TPL), Общие вопросы по PHP, Хаки    4378

вопрос
Кто сможет подсказать, как сделать, чтобы теги {full-story limit="x"},{fullimage-x} работали в краткой новости.
Т.е. Нужно вывести в краткую новость текст и картинку из полной новости.

Ответил: vitnet


Файл engine.php
найти (их 13 шт.)
CHAR_LENGTH(p.full_story) as full_story,

заменить на (привести в такой вид)
CHAR_LENGTH(p.full_story) as full_story, p.full_story,

engine/modules/show.short.php
найти
        if( isset($view_template) AND $view_template == "rss" ) {
            
            $tpl->set( '{rsslink}', $full_link );
            $tpl->set( '{rssauthor}', $row['autor'] );
            ...
            ...

Добавить выше
        $row['full_story'] = stripslashes($row['full_story']);

        // out this tags "{image-full-x}"
        if( stripos ( $tpl->copy_template, "{image-full-" ) !== false ) {
            $images = array();
            preg_match_all('/(img|src)=("|\')[^"\'>]+/i', $row['full_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_count = 0;
                foreach($images as $url) {
                    $i_count++;
                    $tpl->copy_template = str_replace( '{image-full-' . $i_count . '}', $url, $tpl->copy_template );
                    $tpl->copy_template = str_replace( '[image-full-' . $i_count . ']', "", $tpl->copy_template );
                    $tpl->copy_template = str_replace( '[/image-full-'. $i_count . ']', "", $tpl->copy_template );
                }
            }

            $tpl->copy_template = preg_replace( "#\[image-full-(.+?)\](.+?)\[/image-full-(.+?)\]#is", "", $tpl->copy_template );
            $tpl->copy_template = preg_replace( "#\\{image-full-(.+?)\\}#i", "{THEME}/dleimages/no_image.jpg", $tpl->copy_template );
        }
        // out this tags "{image-full-x}"

        // out this tags "{full-story limit="x"}"
        if( preg_match( "#\\{full-story limit=['\"](.+?)['\"]\\}#i", $tpl->copy_template, $matches ) ) {
            $count = intval($matches[1]);

            $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'] );
        } else {
            $tpl->set( '{full-story}', $row['full_story'] );
        }
        // out this tags "{full-story limit=x}"

в шаблоне коротких новостей использовать теги
{full-story limit="XX"}
{image-full-X}

Теперь все ок на 100% сам проверял, не забудьте чистить кеш

10 комментариев

crysnik
Юзер

crysnik - 13 января 2014 00:11 -

вот {short-story limit="x"} и {image-x}
так вроде

GigA
Юзер

GigA - 13 января 2014 01:18 -

Вы меня не поняли, мне нужно вывести из полной новости в краткую, а не наоборот.

FastFud
Юзер

FastFud - 13 января 2014 01:44 -

***Комментарий удален***

GigA
Юзер

GigA - 13 января 2014 03:36 -

Не работает, выводит за место текста цифры какие-то

rocksmart
Юзер

rocksmart - 13 января 2014 07:55 -

В короткой новости не подключен столбец
Full story. В engine.php нужно добавить поле в запросе короткой новости

GigA
Юзер

GigA - 13 января 2014 14:02 -

Все сделал исключительно по инструкции, но так и не помогло

vitnet
PHP-developer

vitnet - 13 января 2014 18:11 -

***Комментарий удален***

GigA
Юзер

GigA - 13 января 2014 18:38 -

Вопрос закрыт. Огромное спасибо.

VooDoo
Юзер

VooDoo - 9 июня 2014 12:20 -

в 10.2 не работает - не выводит вообще ничего по тегу image-full-

boltuk
Юзер

boltuk - 28 февраля 2015 18:15 -

Добрый день!
Подскажите пожалуйста, как вывести тег {full-story limit="600"} в краткой новости, статистической странице (используется тот же шаблон что и в категории), в результатах поиска и в избранном? Когда прописываю, в краткой новости вместо текста надпись {full-story limit="600"}.

На сайте много категорий и в 2-х нужно именно в коротких новостях выводилось описание с полной + что бы нормально отображалось в статике, закладках и в поиске.
Использую DLE 10.3

Заранее благодарю за помощь.

https://dle-faq.ru/faq/tpl/14374-kak-vyvesti-full-story-limit-v-kratkoy-novosti-na-dle-103.html

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

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

наверх