Bolt CMS 中的三层子菜单
Three layer submenu in Bolt CMS
我一直在尝试在 Bolt 中实现三层子菜单。我希望菜单只显示顶层,除非在菜单中选择了顶层,此时我只希望显示第二层。如果选择了第二层的菜单选项,我只想显示该选择的子菜单。到目前为止,我试过这个:
{% for item in menu %}
<li class="{% if item|current %}active{% endif %}">
<a href=" {{ item.link }}" {% if item.title is defined %}title='{{ item.title|escape }}'{% endif %}
class='{% if item.class is defined %}{{item.class}}{% endif %}'>
{% if item.submenu is defined and item|current %} <i class='fa fa-lg fa-caret-down'></i> {% elseif item.submenu is defined and not item|current %}<i class='fa fa-lg fa-caret-right'></i>{% endif %}
{{item.label}}
</a>
</li>
{% if item.submenu is defined and item|current %}
<ul class="nav nav-level2">
{% for item in item.submenu %}
<li {% if item|current %}class='active' {% endif %}>
<a href="{{ item.link }}" {% if item.title is defined %}title='{{ item.title|escape }}'{% endif %}>
{{item.label}}
</a>
</li>
{% if item.submenu is defined%}
{% if item|current %}
<ul class='nav nav-level3'>
{% for item in item.submenu %}
<li class='{% if item|current %}active{% endif %}'>
<a href="{{ item.link }}" {% if item.title is defined %}title='{{ item.title|escape }}'{% endif %}>
{{item.label}}
</a>
</li>
{% endfor %}
</ul>
{% endif %}
{% endif %}
{% endfor %}
</ul>
{% endif %}
{% endfor %}
我在 config.yml 中的菜单结构如下:
_sample menu:
- label: First Section
path: First_Section_Path
- label: Second Section
path: second_section_path
submenu:
-label: Second tier
path: second_tier_path
submenu:
-label: Third tier
-path: third_tier_path
- label: Third Section
path: third_section_path
有更好的方法吗?或者我只是遗漏了一些明显的东西?
预先感谢您的帮助。
默认主题使用宏。 https://github.com/bolt/bolt/blob/master/app/theme_defaults/_sub_menu.twig
如果您想限制结果深度,您可以通过宏递增传递参数并阻止它递归。
我一直在尝试在 Bolt 中实现三层子菜单。我希望菜单只显示顶层,除非在菜单中选择了顶层,此时我只希望显示第二层。如果选择了第二层的菜单选项,我只想显示该选择的子菜单。到目前为止,我试过这个:
{% for item in menu %}
<li class="{% if item|current %}active{% endif %}">
<a href=" {{ item.link }}" {% if item.title is defined %}title='{{ item.title|escape }}'{% endif %}
class='{% if item.class is defined %}{{item.class}}{% endif %}'>
{% if item.submenu is defined and item|current %} <i class='fa fa-lg fa-caret-down'></i> {% elseif item.submenu is defined and not item|current %}<i class='fa fa-lg fa-caret-right'></i>{% endif %}
{{item.label}}
</a>
</li>
{% if item.submenu is defined and item|current %}
<ul class="nav nav-level2">
{% for item in item.submenu %}
<li {% if item|current %}class='active' {% endif %}>
<a href="{{ item.link }}" {% if item.title is defined %}title='{{ item.title|escape }}'{% endif %}>
{{item.label}}
</a>
</li>
{% if item.submenu is defined%}
{% if item|current %}
<ul class='nav nav-level3'>
{% for item in item.submenu %}
<li class='{% if item|current %}active{% endif %}'>
<a href="{{ item.link }}" {% if item.title is defined %}title='{{ item.title|escape }}'{% endif %}>
{{item.label}}
</a>
</li>
{% endfor %}
</ul>
{% endif %}
{% endif %}
{% endfor %}
</ul>
{% endif %}
{% endfor %}
我在 config.yml 中的菜单结构如下:
_sample menu:
- label: First Section
path: First_Section_Path
- label: Second Section
path: second_section_path
submenu:
-label: Second tier
path: second_tier_path
submenu:
-label: Third tier
-path: third_tier_path
- label: Third Section
path: third_section_path
有更好的方法吗?或者我只是遗漏了一些明显的东西?
预先感谢您的帮助。
默认主题使用宏。 https://github.com/bolt/bolt/blob/master/app/theme_defaults/_sub_menu.twig
如果您想限制结果深度,您可以通过宏递增传递参数并阻止它递归。