Обрезание анонса строки по пробелу/слову

Неизвестно почему, но многие из открытых расширений для вывода анонсов комментариев, статей и т.п. имеют обыкновение обрезать анонсы посередине слова, то есть совсем не по фэншую.
При этом апгрейд substr размером с одну строку кода.

Рассмотрим тот самый апгрейд на примере модуля mod_janewslight входящего в комплект хорошего joomla-шаблона ja_erica.
Суть модуля в выводе анонса статьи с картинкой управляемая расширенными настройками.
В файле modules\mod_janewslight\ja_newslight\common.php, подключаемом к основному скрипту модуля, находим строчки обрезания анонса:

$row->introtext1 = strip_tags($row->introtext);
if ($maxchars && strlen ($row->introtext) > $maxchars) {
	$row->introtext1 = substr ($row->introtext1, 0, $maxchars) . "...";
}

И модифицируем их:

$row->introtext1 = strip_tags($row->introtext); // очищаем строку от html и php-тегов 
if ($maxchars && strlen ($row->introtext) > $maxchars) { // проверяем существование переменной $maxchars и его меньший размер по сравнению с обрезаемым анонсом
	$length = strripos(substr($row->introtext1, 0, $maxchars), ' '); // ищем позицию последнего пробела в куске анонса
	$row->introtext1 = substr($row->introtext1, 0, $length) . '...'; // обрезаем по позиции найденного пробела
}

При этом вмешательство в скрипты модуля сведены к минимуму, т.е. например, $maxchars это все также количество символов в "анонсе анонса" статьи, которое задается в поле "Max Chars" настроек модуля.

1 Комментарий

  • 03.22.10 lerceb:

    Спасибо, пригодилось!


Добавление комментария:

Вы можете использовать эти теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">