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

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


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

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

1663 | 1212

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
1155

1663 | 1212

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

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

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