Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как сделать вывод с форматированием через {short-story limit="x"}?

Как сделать вывод с форматированием через {short-story limit="x"}?


     30.06.2015    Все вопросы » Общие вопросы по PHP    1545

вопрос
Как сделать вывод с форматированием через {short-story limit="x"} что бы не было обрезки тегов на подобии
<b>, <i>
и т.д.?
В engine/modules/show.short.php нашел строчки которые отвечают за вывод данного тега 722 строка:

            if ( preg_match( "#\\{short-story limit=['\"](.+?)['\"]\\}#i", $tpl->copy_template, $matches ) ) {
                $count= intval($matches[1]);
                
                $row['short_story'] = preg_replace( "#<!--TBegin(.+?)<!--TEnd-->#is", "", $row['short_story'] );
                $row['short_story'] = preg_replace( "'\[attachment=(.*?)\]'si", "", $row['short_story'] );
                $row['short_story'] = preg_replace ( "#\[hide\](.+?)\[/hide\]#ims", "", $row['short_story'] );
                
                $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'] );
    
            }
        


Я понимаю что может текст обрезаться так что останется
"<b>текст.." 

и весь дизайн может слететь, все равно надеюсь на добрых людей которые помогут отредактировать чтобы не обрезались теги

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


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

sadan
Юзер

sadan - 30 июня 2015 15:29 -

лучше попробуйте плагины jQuery
например jTruncate

FastFud
Юзер

FastFud - 30 июня 2015 15:32 -

Удалите/Закомментируйте строку
$row['short_story'] = strip_tags( $row['short_story'], "<br>" );

SCC
Юзер

SCC - 30 июня 2015 15:35 -

Спасибо что откликнулись. После комментирования данной строки в краткой новости ничего не выводится, вообще ничего.

FastFud
Юзер

FastFud - 30 июня 2015 15:42 -

А ну-ка, покажите

FastFud
Юзер

FastFud - 30 июня 2015 15:51 -

Вообще скрипт удалит еще и все пробелы из текста для подсчета символов. Лучше в short_story добавлять лишь простой текст а в full_story текст с нужными вами тегами.

SCC
Юзер

SCC - 30 июня 2015 16:39 -

Это повлияет на выдачу...простой текст...и текст с тегами есть разница

ПафНутиЙ
Админ

ПафНутиЙ - 30 июня 2015 18:15 -

Для того, что бы оставить форматирование - нужно полностью переписать алгоритм обрезки текста.
погуглите по теме truncate text preserving html tags with php

Каков вопрос - таков и ответ. Просто помните об этом.

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

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

наверх