The iterator: Pages iteration made easy
About
iterator permits to loop over a content fragment in order to create a list of pages.
You may use it to generate any layout.
In particular, you may use it to generate the following layouts:
Layout | Description |
---|---|
grid | a grid of cells that adapt to the screen size |
carrousel | horizontal list navigation with control |
simple list | a vertical list with bullet points |
table | a table |
masonry | bricks that fill the wall |
Example
Masonry
The below iterator example:
- will generate the last 4 modified pages (defined by the page sql in the data node)
select order by date_modified desc limit 4
- as a list of card (defined in the fragment node)
- laid out in a masonry layout
- with a display heading (ie heading d3)
- and the illustrative image of the page (ie page-image)
The iterator markup:
<iterator>
<data>select where is_low_quality = 0 order by date_modified desc limit 6</data>
<heading d3 align="center"> The last 6 Changes </heading>
<masonry>
<fragment>
<card clickable>
<page-image ratio="16:9"/>
=== $title ===
<itext color="muted">${date_modified | format('MMM dd HH:mm')}</itext>
${description | head(100,'...')} [[$path| ]]
</card>
</fragment>
</masonry>
</iterator>
The Result:
The last 6 Changes
Syntax
<iterator>
<data>select where variable = 'xxx'</data>
... header markup...
<fragment>Fragment markup with $variable1 ... $variable2</fragment>
... footer markup...
</iterator>
where:
- data contains a page sql
- fragment is a content fragment that will be repeated for each data row.
- If your iteration is time-based, you may need to set a page cache expiration frequency.
- If the data does not return any rows, the iterator content is not printed (ie header and footer included)