Спасибо, domi27, я поиграл с твоей идеей и придумал это.Я сделал вложенный массив в качестве моего дерева, ['link'] ['sublinks'] равно нулю или другой массив из того же самого.
Шаблоны
файл подшаблона для рекурсии с:
<!--includes/menu-links.html-->
{% for link in links %}
<li>
<a href="{{ link.href }}">{{ link.name }}</a>
{% if link.sublinks %}
<ul>
{% include "includes/menu-links.html" with {'links': link.sublinks} %}
</ul>
{% endif %}
</li>
{% endfor %}
Затем в главном шаблоне вызовите это (вроде как «избыточно» с «там»):
<ul class="main-menu">
{% include "includes/menu-links.html" with {'links':links} only %}
</ul>
Макросы
Подобный эффект может быть достигнут с помощью макросов:
<!--macros/menu-macros.html-->
{% macro menu_links(links) %}
{% for link in links %}
<li>
<a href="{{ link.href }}">{{ link.name }}</a>
{% if link.sublinks %}
<ul>
{{ _self.menu_links(link.sublinks) }}
</ul>
{% endif %}
</li>
{% endfor %}
{% endmacro %}
В основном шаблоне сделайте это:
{% import "macros/menu-macros.html" as macros %}
<ul class="main-menu">
{{ macros.menu_links(links) }}
</ul>
Надеюсь, это поможет:)