Контактная информация            Баг трекер            Предложение хостинг-провайдерам

Тег foreach_cell для Smarty

Санжар Ахмедов Автор: Санжар Ахмедов
Дата: 31 марта 2008
Рубрика: How-to

В OC существует набор тегов foreach_row, foreach_col и foreach_cell для Smarty, которые используются для генерирования таблиц. Эти теги используются в паре foreach_row + foreach_cell или foreach_col + foreach_cell.

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

Пример 1. Вывод списка документов в таблице в 4 колонки

{foreach_row from=$docs item=doc cols=4}
  {foreach_cell}
    <a href="{$doc.href}">{$doc.header}</a>
  {/foreach_cell}
{/foreach_row}


Пример 2. Задание аттрибутов таблицы вручную

<table border="0" cellspacing="0" id="table-docs" class="new-docs" style="font-size: 85%;">
{foreach_row from=$docs item=doc cols=4 table=no}
  {foreach_cell}
    <a href="{$doc.href}">{$doc.header}</a>
  {/foreach_cell}
{/foreach_row}
</table>


Пример 3. Построчная зебра

{foreach_row from=$docs item=doc cols=4 tr=no}
  <tr class="{cycle values="plain,gray"}">
  {foreach_cell}
    <a href="{$doc.href}">{$doc.header}</a>
  {/foreach_cell}
  </tr>
{/foreach_row}


Пример 4. Заполнение пустых ячеек

По умолчанию в последней строке (foreach_row) или столбце (foreach_col) добавляются пустые ячейки (<td>&nbsp;</td>) вместо недостающих документов. Для ручного вывода недостающих ячеек используется параметр expand тега foreach_row/foreach_col. Если задать expand=yes, то foreach_cell будет вызываться с null элементом в недостающих ячейках.

{foreach_row from=$docs item=doc cols=4 expand=yes}
  {foreach_cell}
    {if $doc}
      <a href="{$doc.href}">{$doc.header}</a>
    {else}{* пустая ячейка *}
       N/A
    {/if}
  {/foreach_cell}
{/foreach_row}


Пример 5. Управление всеми тегами таблицы вручную

<table border="0" cellspacing="0" id="table-docs" class="new-docs" style="font-size: 85%;">
{foreach_row from=$docs item=doc cols=3 table=off tr=off}
  <tr class="r-{cycle values="1,2,3"}">
  {foreach_cell td=off}
    <td id="doc-{$doc._id}">
      <a href="{$doc.href}">{$doc.header}</a>
    </td>
  {/foreach_cell}
  </tr>
{/foreach_row}
</table>


Пример 6. Доступ к состоянию цикла

{foreach_row from=$docs item=doc cols=4 status=st}
  {foreach_cell}
    <code>
      row: {$st.col}, col: {$st.row}<br>
      iteration: {$st.iteration}, index: {$st.index}
    </code>
    <a href="{$doc.href}">{$doc.header}</a>
    <code>Full status: {$st|@debug_print_var}</code>
  {/foreach_cell}
{/foreach_row}

Здесь мы через параметр status указали имя переменной, в которой будет доступно состояние цикла (st).

Во всех примерах был показан foreach_row. Если его заменить на foreach_col, то документы будут выводиться в таблице не слева направо, а сверху вниз.

Комментарии

RSS RSS

Добавить комментарий

Имя:     Email:
Комментарий:
Введите символы, которые видите на картинке.
Если символы неразборчивы, кликните по картинке несколько раз.