Контакты

Поиск по сайту

Категория: Joomla Опубликовано: 01 Март 2015

Обрезка текста может понадобиться, если хотим, например, выводить интро-тексты статьей блога категории в блоках одинаковой высоты.

Читабельность интро-текста в блоге статей категории — вещь немаловажная. Поэтому форматирование при обрезке лучше сохранить. При этом неплохо, если вступительный текст будет заканчиваться целым словом, а не его частью. Если в конце используем многоточие, то лишние символы так же нужно убрать.

В Joomla за вывод блога категории отвечает файл blog_item.php. Искать его нужно здесь www\components\com_content\views\category\tmpl. Чтобы не трогать этот файл в самом движке, копируем его в свой шаблон.

Вложенность папок должна быть такой: некий_шаблон\html\com_content\category\.

В папку category помещаем копию файла blog_item.php.

Ищем в файле вот такую строку:

<?php echo $this->item->introtext; ?>

Заменяем ее код на такой:

<?php
$titlelength = mb_strlen($this->item->title,'utf-8');
$neededlength = 200 - $titlelength; //нужнаядлина
$intro = strip_tags($this->item->introtext,
'<p></p><a></a>');
$intro = mb_substr($intro, 0 , $neededlength);
$neededlength = mb_strrpos($intro,'  ','utf-8');
$intro = mb_substr($intro, 0 , $neededlength);
$intro = rtrim($intro, ',—!?:.-...–');
echo $intro.'...';
?>

Т. е., сделали следующее:

  1. Учли длину заголовка статьи (функция mb_strlen). Знаем-знаем — не положено обзывать материал длинными заголовками. Но заказчики-то не знают! Иногда заголовки статьи (не смейтесь) бывают длиной до 5–7 строк.
  2. Установили некий максимум символов в тексте и обрезали первый раз (функция mb_substr), удалив все теги, кроме указанных (функция strip_tags).
  3. Текст обрезали, но он вполне может содержать в конце часть слова, а нам нужно слово целиком. Поэтому режем еще раз (mb_substr), но уже от пробела, стоящего перед последним словом (или частью слова) до конца (функция mb_strrpos и новый $neededlength).
  4. После слова (до пробела, от которого обрезали текст во второй раз) может стоять любой знак препинания — мы ведь не проверяли. Убрали лишнее функцией rtrim и вывели результат.

Теперь, если захотим расположить несколько блоков с превью статей по горизонтали, то можно смело указывать для них оптимальную одинаковую высоту (если, конечно, не предполагаем динамического изменения размера шрифта).

Добавить сообщение

Форма входа

Индекс цитирования Яндекс.Метрика