====== Вывод списков ======
===== MACRO-теги для вывода списков =====
Для вывода списков в шаблонах используется группа тегов [[tags#списки_list_tags|для работы со списками]].
№ |
Название |
Объем, л |
Вес, кг |
{{list using="$#tanks" as="$tank" counter="$number"}}
{{list:item}}
{$number} |
{$tank.name} |
{$tank.volume} |
{$tank.weight} |
{{/list:item}}
{{list:empty}}
Список пуст! |
{{/list:empty}}
{{/list}}
* [[limb3:ru:packages:macro:tags:list_tags:list_tag|Тег {{list}}]] - основной тег, который выводит свое содержимое, если переменная, указанная в атрибуте **using** содержит непустой список (массив или итератор). Атрибут **as** указывает на имя переменной, которая должна содержать очередной элемент списка. По-умолчанию, в качестве **as** используется значение $item.
* [[limb3:ru:packages:macro:tags:list_tags:list_item_tag|Тег {{list:item}}]] - повторяет определенную порцию шаблона по количеству элементов в итераторе тега %%{{list}}%%.
* [[limb3:ru:packages:macro:tags:list_tags:list_empty_tag|Тег {{list:empty}}]] - выводит свое содержимое только в том случае, если список не содержит ни одного элемента.
* [[limb3:ru:packages:macro:tags:list_tags:list_glue_tag|Тег {{list:glue}}]] - используется для разделения одного или группы элементов в списке.
* Переменная $number, она содержит номер элемента в списке. Эта переменная генерится, так как мы указали атрибут **counter** для тега %%{{list}}%%.
В результате мы можем получить несколько результатов. Например, такой:
^№^Название^Объем, л^Вес, кг^
| 1 | Цистерна АБ-102 | 2400 | 340 |
| 2 | Цистерна АБ-103 | 2000 | 300 |
Или такой:
^№^Название^Объем, л^Вес, кг^
| Список пуст! ||||
===== Вывод данных в несколько столбцов =====
Для вывода данных в несколько столбцов можно применять [[limb3:ru:packages:macro:tags:list_tags:list_glue_tag|тег {{list:glue}}]], который выводит определенный кусок кода раз в несколько элементов списка.
Например:
{{list using="$#images"}}
{{list:item}}
{$item.title}
|
{{list:glue step="3"}}
{{/list:glue}}
{{/list:item}}
{{/list}}
Позволит вывести изображения в 3 колонки.
Если вы заметили, то выбранный нами способ для списков, например, с 10 элементами сгенерирует невалидную верстку, поэтому примеры необходимо немного доработать:
{{list using="$#images"}}
{{list:item}}
{$item.title}
|
{{list:glue step="3"}}
{{/list:glue}}
{{/list:item}}
{{list:fill upto='3' items_left='$items_left'}}
|
{{/list:fill}}
{{/list}}
Здесь мы использовали [[limb3:ru:packages:macro:tags:list_tags:list_fill_tag|тег {{list:fill}}]], который выполняет код шаблона, только если список не содержал количество элементов, кратное числу **upto**. При этом тег %%{{list:fill}}%% заполняет переменную с именем **items_left**.
В нашем случае мы просто предпочли вывести заглушку в виде
. Мы могли бы также воспользоваться [[limb3:ru:packages:macro:tags:core_tags:repeat_tag|тегом {{repeat}}]] для генерации недостающих ячеек:
{{list using="$#images"}}
{{list:item}}
{$item.title}
|
{{list:glue step="3"}} {{/list:glue}}
{{/list:item}}
{{list:fill upto='3' items_left='$some_var'}}
{{repeat times='{$some_var}'}}
|
{{repeat}}
{{/list:fill}}
{{/list}}
===== Дополнительные примеры =====
* см. примеры для [[limb3:ru:packages:macro:tags:list_tags:list_tag|тега {{list}}]]
* см. примеры для [[limb3:ru:packages:macro:tags:list_tags:list_glue_tag|тега {{list:glue}}]] |