Basic Usages
The for
tag is simple to implement over arrays of objects.
{% for campus in Campuses %}
{{ campus.Name }}
{% endfor %}
Helper Variables
During every for loop the following helper variables are available to assist
in building magic.
forloop.length |
total number of times the loop will iterate |
forloop.index |
index of the current iteration |
forloop.index0 |
zero based index of the current iteration |
forloop.rindex |
number of iterations left |
forloop.rindex0 |
zero based number of iterations left |
forloop.first |
boolean set to true if this is the first iteration |
forloop.last |
boolean set to true if this is the last iteration |
Influencing Iterations
You can control the number, starting position and direction of your iterations.
Don't believe us? Try these attributes...
limit:int |
limit to the number of interations |
offset:int |
starts the interation at the nth item |
reversed |
let the last be first and the first last
(Matt 20:16) |
Let's see that in action... all at once now...
{% for campus in Campuses limit:2 offset:1 reversed %}
{{ campus.Name }}
{% endfor %}
An Alternate For Loop
There's a slightly different way to iterate through arrays. Consider the
example below.
{% assign campusCount = Campuses | Size | Minus:1 %}
{% for i in (0..campusCount) %}
{{ i | Plus:1 }}. {{ Campuses[i].Name }}
{% endfor %}
This is helpful as a replacement for a while loop. Consider this example where we'd like to list years starting
from 2 years ago and ending with the current year.
{% assign currentYear = 'Now' | Date:'yyyy' %}
{% assign startYear = currentYear | Minus: 2 %}
{% for year in (startYear..currentYear) %}
{{ year }}
{% endfor %}
Break and Continue Tags
v6.0
These two tags give you a little more control for
those times when you just don't want to process through a whole list.
Break Usage
The break
tag iterrupts processing inside a for loop and jumps out of the loop.
{% assign list = "1,2,3,4,5,6,7,8,9,10" | Split: "," %}
{% for i in list %}{{ i }}
{% if i > 3 %}{% break %}{% endif %}{% endfor %}
-- output --
1
2
3
4
Continue Usage
The continue
tag iterrupts processing inside a for loop and skips to the next item in the loop.
{% assign list = "1,2,3,4,5,6,7,8,9,10" | Split: "," %}
{% for i in list %}{% if i == '3' %}{% continue %}{% endif %}{{ i }}
{% endfor %}
-- output --
1
2
4
5
6
7
8
9
10
More complex example skipping the 'Mobile' type number for Ted Decker
{% for phone in Person.PhoneNumbers %}
{% if phone.NumberTypeValue.Value == 'Mobile' %}{% continue %}{% endif %}
{{ phone.NumberTypeValue.Value }}: {{ phone.NumberFormatted }}
{% endfor %}
-- output --
Home: (623) 555-3322
Work: (623) 555-2444
Note:
Both break and continue tags, if used outside of a for
loop, wiil abort the entire rendering, without any errors.