Содержание

Вывод списков

WACT-теги для вывода списков

Для вывода списков в шаблонах используется группа тегов ListTags.

 <table border="1">
   <tr>
    <th></th>
    <th>Название</th>
    <th>Объем, л</th>
    <th>Вес, кг</th>
   </tr>
 <list:list id="table">
   <list:item>
   <tr>
    <td>{$:ListRowNumber}</td>
    <td>{$name}</td>
    <td>{$volume}</td>
    <td>{$weight}</td>
   </tr>
   </list:item>
  <list:default>
  <tr><td colspan='4'>Список пуст!</td></tr>
  </list:default>
 </list:list>
</table>

В результате мы можем получить несколько результатов. Например, такой:

НазваниеОбъем, лВес, кг
1 Цистерна АБ-102 2400 340
2 Цистерна АБ-103 2000 300

Или такой:

НазваниеОбъем, лВес, кг
Список пуст!

Вывод данных в несколько столбцов

Для вывода данных в несколько столбцов можно применять тег <list:separator>, который выводит определенный кусок кода раз в несколько элементов списка.

Например:

<list:list id="images">
<table>
<tr>
 <list:item>
   <td>
    <img src='{$path}' border='0' /><br />{$title}
   </td>
   <list:SEPARATOR step="3"></tr><tr></list:SEPARATOR>
 </list:item>
</tr>
</table>
</list:list>

Позволит вывести изображения в 3 колонки.

Если вы заметили, то выбранный нами способ для списков, например, с 10 элементами сгенерирует невалидную верстку, поэтому примеры необходимо немного доработать:

<list:list id="images">
<table>
<tr>
 <list:item>
    <td>
     <img src='{$path}' border='0' /><br />{$title}
    </td>
   <list:SEPARATOR step="3"></tr><tr></list:SEPARATOR>
 </list:item>
 <list:fill upto='3' var='items_left'>
  <td colspan='{$items_left}'>&nbsp;</td>
 </list:fill>
</tr>
</table>
</list:list>

Здесь мы использовали тег <list:fill> (доступен с версии WACT 0.3), который выполняет код шаблона, только если список не содержал количество элементов, кратное числу upto. При этом тег <list:fill> заполняет переменную с именем var и ставит ее в текущий контейнер данных (будьте аккуратны с именем переменной, так как вы можете случайно затереть что-то в текущейм контейнере данных, а <list:list> не является обычным контейнером данных).

В нашем случае мы просто предпочли вывести заглушку в виде <td colspan='2'>. Мы могли бы также воспользоваться тегом <core:repeat> для генерации недостающих ячеек:

<list:list id="images">
<table>
<tr>
 <list:item>
    <td>
     <img src='{$path}' border='0' /><br />{$title}
    </td>
   <list:SEPARATOR step="3"></tr><tr></list:SEPARATOR>
 </list:item>
 <list:fill upto='3' var='items_left'>
   <core:repeat time='{$items_left}'>
   <td>
    <img src='/images/no_image.gif' alt='sorry, no image' />
   </td>
   </core:repeat>
 </list:fill>
</tr>
</table>
</list:list>

Дополнительные примеры