Smarty: Можно ли загнать в массив строку текста, разбив на две или три части?

  • Автор темы Автор темы Dreamer
  • Дата начала Дата начала

Dreamer

Новичок
Smarty: Можно ли загнать в массив строку текста, разбив на две или три части?

Предполагается, что имеется некая новость, которая храниться в базе данных должна разбита на нескольсо страниц. Для начала считаю сколько символов есть вообще.

{*Расчет колличества символов*}
{assign var="newsmore1" value=$newsmore|count_characters}

{*Обрезаю ровно половину*}
{$newsmore|truncate:$newsmore1/2}</div>

А теперь встрял в то, что не могу показать вторую половину.
Какая связка действий должна быть обратной модификатору переменной truncate?
 
разбивкой новости должен заниматься php а не смарти
 
Re: Smarty: Можно ли загнать в массив строку текста, разбив на две или три части?

Тобешь изначально разбиваешь, а потом загоняешь в переменные смарти!
 
Ну почему же, smarty же по идее умеет операции над текстом выполнять, хотя естественно, видимо, можно внедрить и код на php, это уже когда дойдет до постраничного вывода, сейчас хотя бы разобратся как поделить текст на части...
Думаю не мне одному интересно!
 
Думаю не мне одному интересно!
Сначала подумай над своей проблемой.
можно внедрить и код на php
Ничего не нужно внедрять в шаблон.
Тебе просто нужно произвести все операции на текстом ещё до того, как скормить егол шаблону.
 
Так ведь совственно смарти и призван, для того что бы осуществлять операции над текстом, а именно вывод!
Неужели никто хотябы конструктивного совета не даст, я понимаю что все можно сделать на PHP.
 
конструктивный ответ тебе дали.
у тебя просто ума не хватает это понять
 
Фанат ну конечно, ты же самый умный и мудрый, лучше бы по делу чего сказал. Такие комментарии я тоже могу отпускать! Просьба без оскорблений!
 
Dreamer
Тебя никто не оскорблял, тебе подсказали как решить твою проблему, что еще тебе нуно?
 
Dreamer
По делу? Пожалуйста.
Смарти - это шаблонизатор! Его задача, получить _подготовленные_ данные, вставить их в шаблон, и вывести получившийся html.

Никаких обработок данных с помощью смарти, делать НЕ нужно.

тем более, что ты "понимаю что все можно сделать на PHP"
 
Хорошо, вот вам пример вывода из массива в два столбика:
{assign var="ncols" value=2}
<table width="100%">
<tr>
{foreach from=$news_array item=news}
{assign var="nnewtr" value=$nnewtr+1}
<td>
<a href="{$news.link}">{$news.title|truncate:30}</a>
<br>
<div>
{$news.text|truncate:150}</div>
<div align="right"><a href="{$news.link}">{$lang.readmorenews}</a></div>
<br />
</td>
{if $nnewtr % $ncols == 0}</tr><tr>{/if}
{/foreach}
</tr>
</table>
Что то в таком духе...

И в конечном счете я поставил вопрос, есть ли нечто обратное truncate? Вывод не до символа nn, а начиная с nn
 
WeirD

А откуда берется аксиома про подготовленные данные? Что считать подготовкой.

Налицо столкновение подходов. На мой взгляд разбиение текста скажем на колонки - вполне себе задача для смарти. ;-)

Можно безусловно в php коде это сделать, но если уже выбран смарти, то нужно юзать его на полную катушку, что и пытается сделать Dreamer.

И потом, не забывайте, что страницы новости меняться могут и на одной странице, например JavaScript-ом.
 
В том то и дело, что в мануале было написано, что текст может быть абсолютно без форматирования, а смарти получая его, неважно откуда, может вытворять чего угодно.
Что называется разделить задачи программиста и дизайнера.
Предположим, что я не программер, и пытаюсь понять все богатые возможности этого дела! Чего и вам всем желаю!

Demiurg
Хм, а в мануале по смарти, этой команды и соответственно синтаксиса нет! substr повторяет синтаксис php?
Или вообще имеется ввиду нужно делать врезку на php?
 
Dreamer

Чтобы делать что-то сложное на смарти нужно как минимум понимать как это сделать любом другом языке программирования, желательно конечно PHP.

Смарти умеет вызывать ф-ции PHP в качестве модификаторов.

Вот пример как раз с substr
http://www.phpinsider.com/smarty-forum/viewtopic.php?t=5189&highlight=substr
 
alexhemp, от спасибо за примерчик! То что нужно! Думаю дело продвинеться! Я конечно же утрировал... Безусловно понимаю о чем говорю, хотя php начал изучать совершенно недавно. Ничего сложного во всем этом нет.
 
Сверху