{%- macro section_news(s, lang) -%}
{{ cards.cards_from_pages(pages_modified[lang], max=s.num|d(None)) }}
{%- endmacro -%}
{%- macro section_relevant(s, lang) -%}
{{ cards.cards_from_pages(relevant_pages[lang], max=s.num|d(None)) }}
{%- endmacro -%}
{%- macro section_iframe(s, lang) -%}
{%- endmacro -%}
{%- macro section_tag(s, lang, header_level, in_footer=false) -%}
{%- set title_mode = s.title_mode|d("normal") -%}
{%- if s.title is not defined and title_mode != "prevent" -%}
{{ common.render_header(s.tag.title, header_level, {"id": s.id}, lang, visuallyhidden=(title_mode == "hidden"), in_footer=in_footer) }}
{%- endif -%}
{%- if s.tag.page -%}
{%- if 'before' in s.tag.page.metadata -%}
{{ sections(s.tag.page.metadata.before, lang, header_level + 1, in_footer=in_footer) }}
{%- endif -%}
{{ content_renderer.render_content(s.tag.page.content, lang, header_level - 1, in_footer=in_footer) }}
{%- if 'after' in s.tag.page.metadata -%}
{{ sections(s.tag.page.metadata.after, lang, header_level + 1, in_footer=in_footer) }}
{%- endif -%}
{%- endif -%}
{{ cards.cards_from_pages(s.tag.pages, lang, max=s.num|d(None)) }}
{%- endmacro -%}
{%- macro section_page(s, lang, header_level, in_footer=false) -%}
{%- set title_mode = s.title_mode|d("normal") -%}
{%- if s.title is not defined and title_mode != "prevent" -%}
{{ common.render_header(s.page.title, header_level, {"id": s.id}, lang, visuallyhidden=(title_mode == "hidden"), in_footer=in_footer) }}
{%- endif -%}
{%- if 'before' in s.page.metadata -%}
{{ sections(s.page.metadata.before, lang, header_level + 1, in_footer=in_footer) }}
{%- endif -%}
{{ content_renderer.render_content(s.page.content, lang, header_level - 1, in_footer=in_footer) }}
{%- if 'after' in s.page.metadata -%}
{{ sections(s.page.metadata.after, lang, header_level + 1, in_footer=in_footer) }}
{%- endif -%}
{%- endmacro -%}
{%- macro section(s, lang, header_level, in_footer=false) -%}
{%- set title_mode = s.title_mode|d("normal") -%}
{%- if s.title is defined and title_mode != "prevent" -%}
{{ common.render_header(s.title[lang], header_level, {"id": s.id}, lang, visuallyhidden=(title_mode == "hidden"), in_footer=in_footer) }}
{%- endif -%}
{%- if s.type == "page" -%}
{{ section_page(s, lang, header_level, in_footer) }}
{%- elif s.type == "tag" -%}
{{ section_tag(s, lang, header_level, in_footer) }}
{%- elif s.type == "news" -%}
{{ section_news(s, lang) }}
{%- elif s.type == "iframe" -%}
{{ section_iframe(s, lang) }}
{%- elif s.type == "relevant" -%}
{{ section_relevant(s, lang) }}
{%- else -%}
ERROR: render.section: Unknown section type: {{ s.type|e }}
{%- endif -%}
{%- endmacro -%}
{%- macro sections(sl, lang, header_level, in_footer=false) -%}
{%- for s in sl -%}
{{ section(s, lang, header_level, in_footer=in_footer) }}
{%- endfor -%}
{%- endmacro -%}