Инструменты пользователя

Инструменты сайта


limb3:ru:packages:macro:list_tags

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

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

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

 <table border="1">
   <tr>
    <th></th>
    <th>Название</th>
    <th>Объем, л</th>
    <th>Вес, кг</th>
   </tr>
 {{list using="$#tanks" as="$tank" counter="$number"}}
   {{list:item}}
   <tr>
    <td>{$number}</td>
    <td>{$tank.name}</td>
    <td>{$tank.volume}</td>
    <td>{$tank.weight}</td>
   </tr>
   {{/list:item}}
  {{list:empty}}
  <tr><td colspan='4'>Список пуст!</td></tr>
  {{/list:empty}}
 {{/list}}
</table>
  • Тег {{list}} - основной тег, который выводит свое содержимое, если переменная, указанная в атрибуте using содержит непустой список (массив или итератор). Атрибут as указывает на имя переменной, которая должна содержать очередной элемент списка. По-умолчанию, в качестве as используется значение $item.
  • Тег {{list:item}} - повторяет определенную порцию шаблона по количеству элементов в итераторе тега {{list}}.
  • Тег {{list:empty}} - выводит свое содержимое только в том случае, если список не содержит ни одного элемента.
  • Тег {{list:glue}} - используется для разделения одного или группы элементов в списке.
  • Переменная $number, она содержит номер элемента в списке. Эта переменная генерится, так как мы указали атрибут counter для тега {{list}}.

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

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

Или такой:

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

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

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

Например:

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

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

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

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

Здесь мы использовали тег {{list:fill}}, который выполняет код шаблона, только если список не содержал количество элементов, кратное числу upto. При этом тег {{list:fill}} заполняет переменную с именем items_left.

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

{{list using="$#images"}}
<table>
<tr>
 {{list:item}}
    <td>
     <img src='{$item.path}' border='0' /><br />{$item.title}
    </td>
   {{list:glue step="3"}}</tr><tr>{{/list:glue}}
 {{/list:item}}
 {{list:fill upto='3' items_left='$some_var'}}
   {{repeat times='{$some_var}'}}
   <td>
    <img src='/images/no_image.gif' alt='sorry, no image' />
   </td>
   {{repeat}}
 {{/list:fill}}
</tr>
</table>
{{/list}}

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

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
   __   _   __   ___    ___    _  __
  / /  | | / /  / _ )  / _ |  | |/_/
 / /__ | |/ /  / _  | / __ | _>  <  
/____/ |___/  /____/ /_/ |_|/_/|_|
 
limb3/ru/packages/macro/list_tags.txt · Последние изменения: 2010/11/10 10:02 (внешнее изменение)