Обработка текста на уровне классов, как расширение функционала - как?

Приветствую!

На сайте (LS 0.4) делаю дополнительный блок, в котором вывожу 6 последних постов.
class BlockStream2 extends Block {
	public function Exec() {
		if ($oTopics=$this->Topic_GetTopicsLast(6)) {
			$this->Viewer_Assign('oTopics',$oTopics);
			$sTextResult=$this->Viewer_Fetch("block_list6.tpl");
			$this->Viewer_Assign('sStreamTopics',$sTextResult);
		}
	}
}

И уже в самом шаблоне block_list6.tpl занимаюсь обработкой текста, а именно из $oTopic->getTextSource() получаю две формализованные сущности:
1) Первую картинку по тексту (если есть в составе первых 500 символов) и
2) Текст не более 500 символов.
{foreach from=$oTopics item=oTopic name="cmt"}
{assign var="oUser" value=$oTopic->getUser()}							
{assign var="oBlog" value=$oTopic->getBlog()}
<p>1) {$oTopic->getTextSource()|truncate:500|render_anonce:true}</p>			
<p>2) {$oTopic->getTextSource()|truncate:500|strip_tags:false|nl2br}</p>					
{/foreach}

Картинку из текста я получаю через самописный модификатор Smarty — render_anonce.
А обрезку текста я сделал через стандартный модификатор truncate

Мне кажется это не совсем красивый и правильный способ, может подскажете как сделать более изящней и правильнее? Я бы сделал такую обработку на уровне класса и возвращал уже в шаблон готовые данные, только как? Документации и примеров по LS я что то не нашел.

P.S. И как бы еще на этом уровне поставить фильтр, чтоб выводились только посты (не ссылки и не опросы)

Спасибо!

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.