Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Построчный вывод данных в несколько столбцов в smarty (y0prst)
Author Message
y0prst
Участник форума



Joined: 20 May 2004
Posts: 101
Карма: 9
   поощрить/наказать

Location: Вологда

PostPosted: Tue Mar 07, 2006 9:41 am (написано за 2 минуты 48 секунд)
   Post subject: Построчный вывод данных в несколько столбцов в smarty
Reply with quote

Понадобилось вот сделать такую вещь. Сделал первым придуманным методом :)
Но результат уж больно громоздкий:
Code (php): скопировать код в буфер обмена
        {assign var="nColumns" value="2"}
        {math equation="100/x" x=$nColumns assign="percent"}
        <table summary="Таблица" cellpadding="0" cellspacing="0" width="100%">
                {assign var="nColumn" value=0}
                {foreach name=foreach from=$list item="item"}
                        {math equation="(x-1)%y+1" x=$smarty.foreach.foreach.iteration y=$nColumns assign="nColumn"}
                        {if $nColumn eq 1}
                                <tr>
                        {/if}
                        <td width="{$percent}%">{$item}</td>
                        {if $nColumn eq $nColumns}
                                </tr>
                        {/if}
                {foreachelse}
                        <tr><td></td></tr>
                {/foreach}
                {if ($nColumn gt 0 ) and ($nColumn lt $nColumns)}
                        </tr>
                {/if}
        </table>
Может, это можно попроще организовать?
Back to top
View user's profile Send private message
Алексей С.
Участник форума



Joined: 11 Nov 2004
Posts: 103
Карма: 1
   поощрить/наказать


PostPosted: Tue Mar 07, 2006 9:55 am (спустя 14 минут; написано за 2 минуты 27 секунд)
   Post subject:
Reply with quote

в два столбца надо? вот как то так
Code (php): скопировать код в буфер обмена
<table>
{foreach name=cat from=$data item=value}
{if $smarty.foreach.cat.iteration mod 2}
    <tr>
      <td>1</td>
{else}
      <td>2</td>
    </tr>
{/foreach}
</table>
Back to top
View user's profile Send private message
Антон Макаренко
Участник форума



Joined: 05 Feb 2004
Posts: 374
Карма: 37
   поощрить/наказать

Location: Киев

PostPosted: Tue Mar 07, 2006 10:52 am (спустя 56 минут; написано за 53 секунды)
   Post subject:
Reply with quote

y0prst
Опишите постановку задачи словами, а то что-то не могу въехать %)
Back to top
View user's profile Send private message Send e-mail
y0prst
Участник форума



Joined: 20 May 2004
Posts: 101
Карма: 9
   поощрить/наказать

Location: Вологда

PostPosted: Tue Mar 07, 2006 12:23 pm (спустя 1 час 31 минуту; написано за 2 минуты 12 секунд)
   Post subject:
Reply with quote

Антон Макаренко
Я просто в топике это написал, а в теле сообщения - поленился.
Ну на всякий случай разъясню :)
Имеем $data - произвольный массив, допустим там отсортированные целые числа, начиная с нуля.
нужно вывести это дело в таком виде:
0 1 2
3 4 5
6 7 8
9 10 11

Алексей С.
Спасибо за mod :)
Back to top
View user's profile Send private message
Антон Макаренко
Участник форума



Joined: 05 Feb 2004
Posts: 374
Карма: 37
   поощрить/наказать

Location: Киев

PostPosted: Wed Mar 08, 2006 1:00 am (спустя 12 часов 37 минут; написано за 2 минуты 50 секунд)
   Post subject:
Reply with quote

Надеюсь, что въехал-таки, ибо:
Code (php): скопировать код в буфер обмена
// ...
$smarty->assign('data',array (www.php.net/array)(0,1,2,3,4,5,6,7,8,9,10,11));
// ...
 
Code (any language): скопировать код в буфер обмена
p.s.
v.2.6.7
Back to top
View user's profile Send private message Send e-mail
y0prst
Участник форума



Joined: 20 May 2004
Posts: 101
Карма: 9
   поощрить/наказать

Location: Вологда

PostPosted: Wed Mar 08, 2006 1:05 pm (спустя 12 часов 4 минуты; написано за 4 минуты 57 секунд)
   Post subject: Ассоциативные массивы в Smarty.
Reply with quote

Антон Макаренко
+1. Век живи, век учись :)
Одно но. Сейчас пишу проект с использованием Templier. Вместо чисел 0, 1, 2, ... 11 должны выводиться информационные блоки, дизайн которых хранится в шаблоне.
Пока не могу придумать, как использовать html_table в моём случае. Ведь нужен массив уже сформированных блоков. А сделать массив в шаблоне smarty, насколько я понимаю, невозможно. Вот такая конструкция -- {assign var="data[1]" value=$smarty.capture.item} -- создаёт скалярную переменную $data[1], которая с массивом $data не имеет ничего общего.
Back to top
View user's profile Send private message
y0prst
Участник форума



Joined: 20 May 2004
Posts: 101
Карма: 9
   поощрить/наказать

Location: Вологда

PostPosted: Sun Mar 12, 2006 11:40 am (спустя 3 дня 22 часа 35 минут; написано за 44 секунды)
   Post subject:
Reply with quote

Оказывается, на smarty.php.net (smarty.php.net/contribs/examples/dynamic_table_columns/) уже лежит готовый пример :)
Back to top
View user's profile Send private message
y0prst
Участник форума



Joined: 20 May 2004
Posts: 101
Карма: 9
   поощрить/наказать

Location: Вологда

PostPosted: Sun Mar 12, 2006 12:07 pm (спустя 26 минут; написано за 40 секунд)
   Post subject:
Reply with quote

Остановился на table_foreach (smarty.incutio.com/?page=table_foreach). Никаких арифметических операций, всё просто и прозрачно.
Back to top
View user's profile Send private message
A2L
Участник форума



Joined: 04 May 2006
Posts: 21
Карма: 0
   поощрить/наказать


PostPosted: Thu May 04, 2006 9:36 am (спустя 1 месяц 22 дня 21 час 28 минут; написано за 56 секунд)
   Post subject:
Reply with quote

Кого интересует еще данноя тема загляните на сайтик: smarty.incutio.com/?page=SmartyPlugins, в частности: smarty.incutio.com/?page=HtmlTableAdvPlugin
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML