Не нравятся результаты поиска? Попробуйте другой поиск!

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


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

вопрос
Есть тег: {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
2

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

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

Sander
1126

1638 | 1204

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
2

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

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

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

Sander
1126

1638 | 1204

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

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

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