Optional tags
The tags described here are not enabled by default in Python Liquid2.
tablerow
{% tablerow <identifier> in <expression>
[ cols: <expression> ] [ limit: <expression> ] [ offset: <expression> ] %}
<liquid markup>
{% endtablerow %}
The tablerow
tag renders HTML <tr>
and <td>
elements for each item in an iterable. Text inside <td>
elements will be the result of rendering the tag's block.
data
{
"collection": {
"products": [
{ "title": "Cool Shirt" },
{ "title": "Alien Poster" },
{ "title": "Batman Poster" },
{ "title": "Bullseye Shirt" },
{ "title": "Another Classic Vinyl" },
{ "title": "Awesome Jeans" }
]
}
}
template
<table>
{% tablerow product in collection.products %}
{{ product.title }}
{% endtablerow %}
</table>
output
<table>
<tr class="row1">
<td class="col1">Cool Shirt</td>
<td class="col2">Alien Poster</td>
<td class="col3">Batman Poster</td>
<td class="col4">Bullseye Shirt</td>
<td class="col5">Another Classic Vinyl</td>
<td class="col6">Awesome Jeans</td>
</tr>
</table>
cols
By default, tablerow
will output one row with one column for each item in the sequence. Use the cols
parameter to set the number of columns.
output
<table>
<tr class="row1">
<td class="col1">Cool Shirt</td>
<td class="col2">Alien Poster</td>
</tr>
<tr class="row2">
<td class="col1">Batman Poster</td>
<td class="col2">Bullseye Shirt</td>
</tr>
<tr class="row3">
<td class="col1">Another Classic Vinyl</td>
<td class="col2">Awesome Jeans</td>
</tr>
</table>
limit
If limit
is specified, the tablerow
loop will stop after the given number of iterations.
template
<table>
{% tablerow product in collection.products limit:2 %}
{{ product.title }}
{% endtablerow %}
</table>
output
<table>
<tr class="row1">
<td class="col1">Cool Shirt</td>
<td class="col2">Alien Poster</td>
</tr>
</table>
offset
If offset
is specified, the tablerow
loop will start at the given index in the sequence.
template
<table>
{% tablerow product in collection.products offset:4 %}
{{ product.title }}
{% endtablerow %}
</table>
output
<table>
<tr class="row1">
<td class="col1">Another Classic Vinyl</td>
<td class="col2">Awesome Jeans</td>
</tr>
</table>
tablerowloop
A tablerowloop
object is available inside every tablerow
block.
Property | Description | Type |
---|---|---|
length |
The length of the sequence being iterated | integer |
index |
The 1-base index of the current iteration | integer |
index0 |
The 0-base index of the current iteration | integer |
rindex |
The 1-base index of the current iteration counting from the end | integer |
rindex0 |
The 0-base index of the current iteration counting from the end | integer |
first |
true if the current iteration is the first, false otherwise |
bool |
last |
true is the current iteration is the last, false otherwise |
bool |
col |
The 1-based column number | integer |
col0 |
The 0-based column number | integer |
col_first |
true if the current column is the first column, false otherwise |
integer |
col_last |
true if the current column is the last column, false otherwise |
integer |
row |
The current row number of the table | integer |
template
{% tablerow product in collection.products cols:2 %}
{{ product.title }} - {{ tablerowloop.col0 }}
{% endtablerow %}
output
<table>
<tr class="row1">
<td class="col1">Cool Shirt - 0</td>
<td class="col2">Alien Poster - 1</td>
</tr>
<tr class="row2">
<td class="col1">Batman Poster - 0</td>
<td class="col2">Bullseye Shirt< - 1/td></td>
</tr>
<tr class="row3">
<td class="col1">Another Classic Vinyl - 0</td>
<td class="col2">Awesome Jeans - 1</td>
</tr>
</table>