Выводить часть данных из переменной (обрезка текста)

Статус
В этой теме нельзя размещать новые ответы.

bossserg

Создатель
Регистрация
12 Сен 2015
Сообщения
17
Реакции
0
В шаблоне tpl
есть переменная {$description} она выводит содержание статьи
Как мне сделать так что выводилось только 300 сим.
есть функция
mb_strimwidth
PHP:
<?php

echo mb_strimwidth("Hello World", 0, 10, "...");
// Выведет Hello W...
?>

но как правильно это сделать в формате шаблона tpl

Код:
{echo mb_strimwidth({$description}, 0, 300, "...")}
Правильно ли это??

Спасибо
 
Что за шаблонизатор?

Вообще хорошим тоном является предварительная подготовка данных в модели, а не в представлениях...
 
Для начала Вы указали бы где используете шаблоны: самопис, smarty или еще где?
Функция такая в php7 есть.

Вообще лучше всего не вставлять в шаблон php обработчик, а изменять строку на стадии ее работы в модуле. Ищем где формируется переменная $description и перед ее передачей вставляем
PHP:
$description = mb_strimwidth($description, 0, 300, "...");
Если работаете в smarty, то там есть функция truncate
HTML:
{$description|truncate:300:"...":true}
А так, нужно смотреть в какой ЦМС вы работаете с шаблонами и как они обрабатываются. Гадать правильно или нет не имеет смысла.
 
substr не очень по паре причин, надо самому еще добавлять "...", если строка мультибайтовая (UTF-8) то обрезка получится неправильная и в конце будет "колокольчик".

по концепту - нет ничего страшного и зазорного в видоизменении данных в самом шаблоне, даже при строгом соблюдении MVC,
это доказывает как минимум поддержка различных фильтров шаблонизаторами.

по сути - судя по расширению и синтаксису это наиболее вероятно smarty, там как уже было сказано выше для этого есть фильтр truncate
 
Сайт самописный, всем спасибо за ответы, буду разбираться
Если я не ошибаюсь в коде есть.

PHP:
public function GetInfo() {
        $job = array('id' => $this->mId,
            'type_id' => $this->mTypeId,
            'category_id' => $this->mCategoryId,
            'category_name' => $this->mCategoryName,
            'url' => stripslashes($this->mUrl),
            'title' => stripslashes($this->mTitle),
            'url_title' => stripslashes($this->mUrlTitle),
            'location' => $this->mLocation,
            'description' => stripslashes($this->mDescription);
}

мне нужно прописать
PHP:
  'description' => mb_strimwidth($this->mDescription, 0, 300, "...");

правильно ли я понял??
 
да,
но на всякий случай даже лучше так

PHP:
 'description' => mb_strimwidth(stripslashes($this->mDescription), 0, 300, "...");
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху