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

Как сократить текст до конца предложения, т.е. до точки?


     09.11.2015    Шаблоны (TPL), Хаки    7305

вопрос
Есть тег: {short-story limit="x"} - Выводит только текст краткой новости без HTML форматирования, при этом сам текст публикации сокращается до указанного X количества символов - т.е. текст в короткой новости может сократиться на половине предложения...



Ответил: Sander


Открыть файл ./engine/modules/show.short.php
Найти строку:
if( ($temp_dmax = dle_strrpos( $row['short_story'], ' ', $config['charset'] )) ) $row['short_story'] = dle_substr( $row['short_story'], 0, $temp_dmax, $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'] );


Но если взять текст, например:
Выводит только текст краткой новости без HTML форматирования. При этом сам текст публикации сокращается до указанного X количества символов.

И использовать тег {short-story limit="50"}
То со стандартным алгоритмом будет показано:
Выводит только текст краткой новости без HTML

А с этой правкой - строка будет обрываться посреди слова, строго до указанного символа:
Выводит только текст краткой новости без HTML форм

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

compromat
Юзер

compromat - 10 ноября 2015 18:15 -

Спасибо, то что искал. Обрубает на конце предложение :)
Как теперь поставить точку (.) в конце самого преложения.

Sander
Эксперт

Sander - 10 ноября 2015 18:48 -

{short-story limit="50"}.

ну или
if( ($temp_dmax = dle_strrpos( $row['short_story'], '.', $config['charset'] )) ) $row['short_story'] = dle_substr( $row['short_story'], 0, $temp_dmax, $config['charset'] ).".";

SanDev.pro - мой блог.

ICQ: 404-037-556
Skype: Sander8804

compromat
Юзер

compromat - 10 ноября 2015 19:20 -

Первым вариантом ставиться, спасибо, но если текст короткий, например меньше 50 символов, в конце предложение ставиться две точки..

Второй вариант не работает, точка не ставиться, только что проверил

Sander
Эксперт

Sander - 10 ноября 2015 19:22 -

Тогда после строки
if( ($temp_dmax = dle_strrpos( $row['short_story'], '.', $config['charset'] )) ) $row['short_story'] = dle_substr( $row['short_story'], 0, $temp_dmax, $config['charset'] );

Добавить
$row['short_story'] .= ".";

SanDev.pro - мой блог.

ICQ: 404-037-556
Skype: Sander8804

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

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

наверх