Я хочу сделать субнава для своей Grav Theme. Я уже видел вопрос по этой теме: Поднавигация GRAV
{% block navigation %}
{% macro loop(page) %}
{% for p in page.children %}
{% if p.visible %}
{% set active_page = (p.active or p.activeChild) ? 'active' : '' %}
<div>
<a href = "{{ p.url }}" class = "btn btn-nav" role = "button">
{{ p.menu }}
</a>
{% if p.children.count > 0 %}
<div class = "dropdown">
<a href = "{{ p.url }}" class = "btn btn-nav dropdown-toggle" role = "button" id = "dropdownMenuLink" data-toggle = "dropdown" aria-haspopup = "true" aria-expanded = "true">
{{ p.menu }}
<span class = "icon icon--bottom"></span>
</a>
<div class = "dropdown-menu" aria-labelledby = "dropdownMenulink" x-placement = "bottom-start">
{{ _self.loop(p) }}
</div>
</div>
{% endif %}
</div>
{% endif %}
{% endfor %}
{% endmacro %}
{% endblock %}
<div class = "topics" style = "display: flex;">
{{ _self.loop(pages) }}
</div>
Проблема, с которой я столкнулся, заключается в том, что с моим кодом страницы дважды отображаются в навигации, и это из-за тега a
в раскрывающемся списке div
.
Есть ли способ разместить тег a
в раскрывающемся списке со всей информацией, которую я написал в своем коде? И что он появляется в навигации только один раз.
Спасибо за ответы!
{% block navigation %}
{% macro loop(page) %}
{% for p in page.children %}
{% if p.visible %}
{% set active_page = (p.active or p.activeChild) ? 'active' : '' %}
<div>
{% if p.children.count > 0 %}
<div class = "dropdown">
<a href = "{{ p.url }}" class = "btn btn-nav dropdown-toggle" role = "button" id = "dropdownMenuLink" data-toggle = "dropdown" aria-haspopup = "true" aria-expanded = "true">
{{ p.menu }}
<span class = "icon icon--bottom"></span>
</a>
<div class = "dropdown-menu" aria-labelledby = "dropdownMenulink" x-placement = "bottom-start">
{{ _self.loop(p) }}
</div>
</div>
{% else %}
<a href = "{{ p.url }}" class = "btn btn-nav" role = "button">
{{ p.menu }}
</a>
{% endif %}
</div>
{% endif %}
{% endfor %}
{% endmacro %}
{% endblock %}
<div class = "topics" style = "display: flex;">
{{ _self.loop(pages) }}
</div>
Это код, который я использовал вместо того, что написал в моем вопросе
Я просмотрел тему антивещества и нашел решение своей проблемы.
{% if p.children.count > 0 &}
надо ставить перед деталью. В итоге я сделал "{% else%}" для нормального состояния