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

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


     30.06.2015    Общие вопросы по PHP    1089

вопрос
Как сделать вывод с форматированием через {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
16

107 | 38

sadan - 30 июня 2015 15:29 - Юзер

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

FastFud
50

1599 | 588

FastFud - 30 июня 2015 15:32 - Юзер

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

SCC
13

SCC - 30 июня 2015 15:35 - Юзер

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

FastFud
50

1599 | 588

FastFud - 30 июня 2015 15:42 - Юзер

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

FastFud
50

1599 | 588

FastFud - 30 июня 2015 15:51 - Юзер

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

SCC
13

SCC - 30 июня 2015 16:39 - Юзер

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

ПафНутиЙ
1065

3396 | 2434

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

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

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

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

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