AnQiCMS模板如何构建和显示多级导航菜单?

📅 👁️ 80

网站导航是用户与网站互动的第一扇窗,清晰、直观的导航系统能极大地提升用户体验,帮助访客快速找到所需信息。AnQiCMS 提供了灵活强大的导航管理功能,无论是简单的单级菜单,还是复杂的二级、三级甚至更多层级的多级导航,都能轻松实现。接下来,我们将详细了解如何在 AnQiCMS 中构建和显示多级导航菜单。

后端设置:构建导航的基石

在 AnQiCMS 中,多级导航的构建始于后台的精心配置。您可以通过后台的“网站导航设置”功能,定义网站的各个菜单结构。

1. 导航类别管理

首先,导航不仅仅局限于网站顶部的主菜单。AnQiCMS 允许您创建多个“导航类别”,例如主导航、页脚导航、侧边栏导航等等。 在“导航类别管理”中,您可以根据网站布局需求,新增不同的导航类别。系统默认会有一个“默认导航”类别,您可以根据需要创建新的类别,比如创建一个名为“页脚导航”的类别。每个类别都有一个唯一的 typeId,这个 ID 将在前端模板中用于指定调用哪个导航列表。

2. 导航链接设置

确定好导航类别后,下一步就是往这些类别中添加具体的导航链接。在“导航链接设置”中,您可以为每个类别添加导航条目,并定义它们的层级关系。

  • 上级导航: 这是实现多级导航的关键。您可以选择一个已存在的一级导航作为当前链接的“上级导航”,这样当前链接就会成为其子菜单项。AnQiCMS 原生支持最多两级导航(即一级主菜单,二级子菜单),通过这个设置可以轻松实现。
  • 显示名称、子标题名称、导航描述: 这些字段允许您为导航项提供丰富的信息,例如主标题、副标题或简要描述,这在一些设计复杂的导航菜单时非常有用。
  • 链接类型: AnQiCMS 提供了三种灵活的链接类型:
    • 内置链接: 包含首页、文章模型首页、产品模型首页等常用页面,方便直接链接到这些功能页面。
    • 分类页面链接: 这是构建动态多级导航的重要选项。您可以选择网站中已创建的任何分类或单页面作为导航链接。
    • 外部链接: 允许您输入任意 URL,无论是站内其他页面还是外部网站链接。
  • 显示顺序: 您可以为每个导航链接设置一个数字顺序,数字越小,显示越靠前,从而精确控制导航项的排列。

通过这些设置,您可以根据自己的网站结构和设计需求,在 AnQiCMS 后台灵活地搭建出各种层次的导航菜单。

模板调用:将导航呈现于前端

一旦后台导航设置完毕,前端模板中就可以通过特定的标签来调用并显示这些导航数据。AnQiCMS 使用的是类似 Django 模板引擎的语法,非常直观。

1. 使用 navList 标签调用导航

核心的导航调用标签是 navList。它会根据您在后台的配置,提取出对应的导航数据。

基础的 navList 标签用法如下,它会把获取到的导航数据存入 navs 变量中,然后您可以通过 for 循环遍历这些数据:

{% navList navs with typeId=1 %} {# 这里的 typeId=1 对应后台“默认导航”的类别ID,请根据实际情况修改 #}
    {# 导航菜单的HTML结构将在这里构建 #}
{% endnavList %}

2. 构建单级导航菜单

如果只需要显示一级菜单,代码会比较简洁:

<nav>
    <ul>
        {% navList navs with typeId=1 %}
            {% for item in navs %}
                <li class="{% if item.IsCurrent %}active{% endif %}">
                    <a href="{{ item.Link }}">{{ item.Title }}</a>
                </li>
            {% endfor %}
        {% endnavList %}
    </ul>
</nav>

在上面的代码中,item.Link 获取导航链接地址,item.Title 获取导航显示名称。item.IsCurrent 是一个非常有用的布尔值,当当前页面与该导航链接匹配时,它会返回 true,您可以利用它来为当前激活的菜单项添加 active 类,实现高亮效果。

3. 构建二级导航菜单

要实现二级导航,需要利用 navList 返回数据中 item.NavList 属性。如果一个导航项有子菜单,那么 item.NavList 将是一个包含子菜单项的数组。您可以在父菜单项的循环中,再嵌套一个 for 循环来显示子菜单:

<nav>
    <ul class="main-menu">
        {% navList navs with typeId=1 %}
            {% for item in navs %}
                <li class="{% if item.IsCurrent %}active{% endif %}">
                    <a href="{{ item.Link }}">{{ item.Title }}</a>
                    {% if item.NavList %} {# 判断是否有子菜单 #}
                        <ul class="sub-menu">
                            {% for subItem in item.NavList %}
                                <li class="{% if subItem.IsCurrent %}active{% endif %}">
                                    <a href="{{ subItem.Link }}">{{ subItem.Title }}</a>
                                </li>
                            {% endfor %}
                        </ul>
                    {% endif %}
                </li>
            {% endfor %}
        {% endnavList %}
    </ul>
</nav>

这段代码展示了一个典型的二级导航结构。当 item.NavList 存在时,就会渲染一个 sub-menu<ul> 列表,其中包含所有的子菜单项。

4. 结合 categoryList 实现多级动态导航 (适用于更深层级)

AnQiCMS 的 navList 标签原生支持两级导航。但如果您的网站分类层级更深,或者您希望导航完全动态地根据分类结构生成(而不仅仅是后台手动配置的链接),那么可以结合使用 categoryList 标签。

categoryList 标签可以获取指定内容模型的分类数据,并且能够递归地显示子分类。通过将 categoryList 嵌套在 navList 的子菜单部分,或者直接独立使用 categoryList,您可以构建出更灵活的多级动态导航。

以下是一个将 navListcategoryList 结合,实现“一级导航(后台配置)-> 二级导航(后台配置)-> 三级分类(动态获取)”的示例:

<nav>
    <ul class="main-menu">
        {% navList navs with typeId=1 %}
            {% for item in navs %}
                <li class="{% if item.IsCurrent %}active{% endif %}">
                    <a href="{{ item.Link }}">{{ item.Title }}</a>
                    {% if item.NavList %}
                        <ul class="sub-menu">
                            {% for subItem in item.NavList %}
                                <li class="{% if subItem.IsCurrent %}active{% endif %}">
                                    <a href="{{ subItem.Link }}">{{ subItem.Title }}</a>
                                    {# 假设 subItem.PageId 对应一个分类ID,且我们希望在其下动态显示其子分类 #}
                                    {% if subItem.PageId > 0 %}
                                        {% categoryList categories with parentId=subItem.PageId %}
                                            {% if categories %}
                                                <ul class="third-level-menu">
                                                    {% for category in categories %}
                                                        <li><a href="{{ category.Link }}">{{ category.Title }}</a></li>
                                                    {% endfor %}
                                                </ul>
                                            {% endif %}
                                        {% endcategoryList %}
                                    {% endif %}
                                </li>
                            {% endfor %}
                        </ul>
                    {% endif %}
                </li>
            {% endfor %}
        {% endnavList %}
    </ul>
</nav>

在这个示例中,我们首先使用 navList 获取了两级后台配置的导航。在二级导航 subItem 的循环中,我们检查 subItem.PageId (如果二级菜单关联了某个分类ID),然后使用 categoryList 获取该分类的所有子分类,从而动态生成了第三级菜单。categoryList 本身也支持 parentId 参数来获取指定父级下的子分类,并有 HasChildren

相关文章

AnQiCMS如何动态显示网站的首页TDK信息?

网站的TDK,即Title(标题)、Description(描述)和Keywords(关键词),是搜索引擎优化(SEO)的基础要素,它们直接影响着网站在搜索引擎结果页面(SERP)中的展示效果和用户的点击意愿。对于网站的“门面”——首页而言,精准且有吸引力的TDK信息更是至关重要。 在安企CMS (AnQiCMS) 中,管理和动态展示网站首页的TDK信息是一项直观且高效的任务

2025-11-08

如何在AnQiCMS前端页面中显示网站的联系电话和地址?

在网站运营中,清晰、便捷地展示网站的联系电话和地址,是建立用户信任、促进沟通交流的关键一步。对于使用AnQiCMS的朋友们来说,系统提供了非常灵活和直观的方式来管理和展示这些重要的联系信息。本文将详细介绍如何在AnQiCMS的前端页面中显示网站的联系电话和地址。 ### 第一步:在AnQiCMS后台录入联系方式 首先,我们需要确保网站的联系信息已经在后台正确录入。这是在前端显示这些信息的基础

2025-11-08

AnQiCMS模板中如何显示自定义版权信息?

在AnQiCMS网站运营中,网站的页脚通常承载着重要的信息,其中版权声明不仅是法律要求,更是品牌专业度的体现。一份清晰且动态更新的版权信息,能够提升网站的专业形象,并为内容提供基本的保护。在AnQiCMS中,管理和显示网站的自定义版权信息是一项非常直观且灵活的操作。 接下来,我们将详细了解如何在AnQiCMS模板中设置和显示您的自定义版权信息。 --- ### 一

2025-11-08

如何获取并展示AnQiCMS网站的备案号?

对于在中国大陆运营的网站而言,备案号(ICP号)是一个不可或缺的元素。它不仅是法律法规的要求,更是提升网站公信力、获取用户信任的重要标志。AnQiCMS深知这一点,因此在系统设计之初就考虑到了备案号的便捷管理与展示,让网站运营者可以轻松完成配置。 接下来,我们将一起了解如何在AnQiCMS网站上获取(配置)并展示备案号。 ### 在后台设置中录入备案信息 要让网站前端显示备案号

2025-11-08

如何使用AnQiCMS的面包屑导航标签展示当前页面路径?

在网站运营中,清晰的导航路径对于用户体验和搜索引擎优化(SEO)至关重要。面包屑导航(Breadcrumb Navigation)正是这样一种能显著提升网站可用性的辅助工具,它能够直观地告诉用户当前所在页面的位置,并提供快速返回上级页面的便捷入口。在AnQiCMS中,实现面包屑导航功能非常简单和灵活。 AnQiCMS 为我们提供了专门的面包屑导航标签 `breadcrumb`,通过它

2025-11-08

AnQiCMS如何获取指定内容模型的分类列表并显示?

在AnQiCMS中,灵活地获取并展示指定内容模型的分类列表,是构建清晰网站结构和良好用户体验的关键。无论是产品展示、文章归档还是服务介绍,分类列表都扮演着重要的导航角色。AnQiCMS强大的模板标签系统,让这一过程变得直观且高效。 ### 核心标签:`categoryList`的妙用 在AnQiCMS的模板设计中,我们主要依靠`categoryList`这个强大的标签来获取分类数据

2025-11-08

如何在AnQiCMS中显示当前分类的详细信息和描述?

在运营安企CMS(AnQiCMS)网站时,我们经常需要在分类页面上动态展示当前分类的详细信息和描述,比如分类的标题、简介、大图,甚至是自定义的字段。这不仅能帮助用户更好地理解当前页面的主题,也能有效提升页面的SEO表现。安企CMS为此提供了非常灵活且直观的模板标签,让这项工作变得轻松简单。 ### 认识 `categoryDetail` 标签

2025-11-08

AnQiCMS模板如何展示所有单页面的列表和链接?

在AnQiCMS中,想要在网站模板里展示所有单页面的列表和链接,其实是一个非常常见的需求,比如您可能想在网站底部放置一个“网站地图”或者“快速链接”区域,又或者需要在侧边栏列出所有的“服务项目”单页。AnQiCMS提供了一个简单而强大的模板标签,让您能够轻松实现这一点。 ### 理解单页面及其作用 在AnQiCMS中,单页面(Page)通常用于发布那些内容相对固定

2025-11-08