Presentation Pattern Catalog

3   Iteration

3-1   Iterate Element Pattern

3-1-1   Description

Iteration which contains _stag, _cont, and _etag represents to iterate the element. This pattern is named 'Iterate Element' pattern.

3-1-2   Situation

The situation is very popular which requres to print list items. This pattern is very useful for all these situations.

3-1-3   Example Code

Presentation Data:
<table>
  <tr id="mark:list">
   <td id="mark:item">item</td>
  </tr>
</table>
Presentation Logic:
/* iterate element */
#list {
  logic: {
    foreach ($list as $item) {
      _stag();
      _cont();
      _etag();
    }
  }
}

#item {
  value: $item;
}
Output Script:
<table>
<?php     foreach ($list as $item) { ?>
  <tr>
   <td><?php echo $item; ?></td>
  </tr>
<?php     } ?>
</table>

3-1-4   Supplement

Kwartz directive kw:d="foreach(list as item)" lets you to use this pattern without presentation logic file. See reference manual for details.

<table>
  <tr kw:d="foreach($list as $item)">
    <td kw:d="value($item)">item</td>
  </tr>
</table>

3-2   Iterate Content Pattern

3-2-1   Description

Iteration which contains only _cont represents to iterate the content. This pattern is named 'Iterate Content' pattern.

3-2-2   Situation

This pattern is very useful when creating <dl></dl> list or table which repeats several rows.

3-2-3   Example Code

Presentation Data:
<dl id="mark:list">
  <dt id="mark:text">text</dt>
  <dd id="mark:desc">description</dd>
</dl>
Presentation Logic:
/* iterate only content */
#list {
  logic: {
    _stag();
    foreach ($items as $item) {
      _cont();
    }
    _etag();
  }
}

#text {
  value:  $item->text;
}
#desc {
  value:  $item->desc;
}
Output Script:
<dl>
<?php     foreach ($items as $item) { ?>
  <dt><?php echo $item->text; ?></dt>
  <dd><?php echo $item->desc; ?></dd>
<?php     } ?>
</dl>

3-2-4   Supplement

Kwartz directive kw:d=list(list as item lets you to use this pattern without presentation logic file. See reference manual for details.

<dl kw:d="list($items as $item)">
  <dt kw:d="value($item->text)">text</dt>
  <dd kw:d="value($item->desc)">description</dd>
</dl>