Smarty, универсальное решение проблемы вывода.

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

RolCom

Постоялец
Регистрация
12 Мар 2008
Сообщения
351
Реакции
108
Суть проблемы, есть массив с данными допустим так:
Код:
Array
(
    [0] => Array
        (
            [header] => Заголовок изображения
            [src] => image.jpeg
        )
    [1] => Array
        (
            [header] => Заголовок изображения 2
            [src] => image2.jpeg
        )
)
Надо вывести в виде таблицы с произвольным числом рядов, к примеру так:
Код:
+------------+-------------+-------------+
|Заголовок 1 | Заголовок 2 | Заголовок 3 |
+------------+-------------+-------------+
|     <img>  |  <img>      |   <img>     |
+------------+-------------+-------------+
|Заголовок 4 | Заголовок 5 | Заголовок 6 |
+------------+-------------+-------------+
|     <img>  |  <img>      |   <img>     |
+------------+-------------+-------------+

Как это сделать?
 
Для просмотра ссылки Войди или Зарегистрируйся
А если ничего не поймешь, то скачай исходник примера(гостевая помойму)ю Там все наглядно показано.
 
smarty.net сейчас не доступен, но ссудя по ссылке она на описание оператора foreach. Так вот он здесь не подходит.
Буду очень признателен за пример, как прикрутить этот html:
HTML:
<table>
<tr>
   <td>Заголовок к картинке 1</td>
   <td>Заголовок к картинке 2</td>
   <td>Заголовок к картинке 3</td>
<tr>
   <td><img src="..." alt="картинка 1"></td>
   <td><img src="..." alt="картинка 2"></td>
   <td><img src="..." alt="картинка 3"></td>
<tr>
   <td>Заголовок к картинке 4</td>
   <td>Заголовок к картинке 5</td>
   <td>Заголовок к картинке 6</td>
<tr>
   <td><img src="..." alt="картинка 4"></td>
   <td><img src="..." alt="картинка 5"></td>
   <td><img src="..." alt="картинка 6"></td>
</table>
 
тока так наверное
HTML:
<table>
<tr>
{section name=i loop=$massiv}
    <td>{$massiv[i].header}</td>
{/section}
</tr>
<tr>
{section name=i loop=$massiv}
    <td>{$massiv[i].src}</td>
{/section}
</tr>
<table>
 
smarty.net сейчас не доступен, но ссудя по ссылке она на описание оператора foreach. Так вот он здесь не подходит.
Если тебе не подходит оператор перебора массива и ты не знаешь, что такое if, то сходи к школьному учителю. Как ты получишь прорисовку если тебе не известно кол-во элементов? тут достаточно оператора foreach и if.
 
Denis5
К сожалению не пойдет, получится длинная таблица, а надо в n столбцов. см в первом посте, втором блоке code
Если тебе не подходит оператор перебора массива и ты не знаешь, что такое if, то сходи к школьному учителю.
Что такое if знаю, оператором foreach пользоваться умею. А ты если такой умный просто сделай этот пример с foreach, ок? Или не флуди зря.
 
Код:
$smarty->assign('data',array(1,2,3,4,5,6,7,8,9));
$smarty->display('index.tpl');
HTML:
{html_table loop=$data cols=3 table_attr='border="0"'}
на тебе еще и foreach
Код:
<table> 
   <tr> 
   {foreach name=loop_name item=some_item from=$some_data} 
      <td>
          info for this table data 
      </td>       
 
      {if $smarty.foreach.loop_name.iteration mod $columns eq 0} 
         </tr><tr> 
      {/if}       
 
   {/foreach}    
</tr> 
</table>
 
Ни то, ни другое не подходит. У тебя просто массив со скалярными значениями. А надо структуру подобную см выше - каждый элемент массива массив из двух элементов, подпись к рисунку и рисунок. Яж не зря привел структуру данных, html код, и что должно получится.
 
Сделай дивами в жёстком контейнере... Сами и перенесуться.
 
Дело в том высота котента (в данном случае заголовок рисунка) неизвестна и в случае дивов верхняя ячейка будет разной высоты, а должна быть выравнена.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху