I seem to be having difficulty in grasping how to properly use Tera’s array filters on an array of pages in Zola.
For example, I am quite able to get the array of pages from current_section.pages
which can be filtered with filter
and then iterated using Tera’s for
loops. A brief example being:
{% set current_section = get_section(path=current_path ~ "_index.md" | trim_start_matches(pat="/")) %}
{% set featured_articles = current_section.pages | filter(attribute="taxonomies.status", value=["en-vedette"]) %}
{% for p in featured_articles %}
{{ p.title }}
{% endfor %}
This will simply work as expected, giving us the title
string of each page in the array. However, if I use a different filter – for example getting the first
, last
, or nth
using the appropriate Tera filters on the array of current_section.pages
– I seem to be unable to use the page [object]
similarly. I get an error that the page variables are not found.
An example that generates an error being:
{% set current_section = get_section(path=current_path ~ "_index.md" | trim_start_matches(pat="/")) %}
{% set main_article = current_section.pages | nth(n=1) %}
{{ main_article.title }}
This will give me an error of Variable
main_article.title not found in context while rendering 'index.html'
. I can see that main_article
is an [object]
, thus so far I am expecting it is a page object. However, it clearly is not the same type of object as the ones I am using when iterating with a for loop.
It’s easy enough for me to simply just use a for loop to get around this, but it would be much more elegant to be able to use the other Tera array filters.
What am I not understanding here? How can I properly use these other Tera array filters on an array of pages?
Any and all help is greatly appreciated!