在网站运营中,清晰、直观的导航菜单是用户体验的核心,它不仅能引导访客快速找到所需信息,更是网站结构和SEO优化的重要组成部分。AnQiCMS 作为一个高效的企业级内容管理系统,提供了灵活强大的导航菜单构建和显示功能,帮助您轻松管理网站的层级结构。

一、在AnQiCMS后台构建导航菜单

构建多级导航菜单的第一步是在AnQiCMS的后台进行集中管理。您可以在“后台设置”区域找到“导航设置”选项,这里是所有网站导航的配置中心。

首先,您可能需要定义不同的导航区域,比如“顶部主导航”、“页脚导航”或是“侧边栏导航”。AnQiCMS 支持通过“导航类别管理”来创建和区分这些导航区域。默认会有一个“默认导航”类别,您可以根据需求新增“页脚导航”等,这样就能为网站的不同位置提供独立的菜单列表。

接着,为每个导航类别添加具体的导航链接。在“导航链接设置”中,您可以灵活地配置每个菜单项。

  • 显示名称与辅助信息: 每个菜单项都有一个“显示名称”,这是前端展示给用户看的文字。如果需要更丰富的展示,还可以设置“子标题名称”和“导航描述”,这些信息都可以在模板中调用。
  • 链接类型: AnQiCMS 提供了多种链接类型,满足不同内容指向的需求:
    • 内置链接: 包含网站首页、文章模型首页、产品模型首页等预设链接,方便快速引用。
    • 分类页面链接: 允许您直接选择已创建的文档分类或单页面作为菜单项,当这些内容更新时,导航链接也会自动同步。
    • 外部链接: 如果需要指向站外内容或自定义的站内URL,可以选择此项,自由填写目标地址。
  • 构建多级结构: AnQiCMS 支持最多两级的导航菜单。通过设置菜单项的“上级导航”,您可以轻松地将某个链接指定为一级导航下的子菜单。例如,如果您有一个“产品”的一级导航,可以在其下添加“产品A”、“产品B”等作为二级菜单项。
  • 显示顺序: 每个菜单项都可以设置“显示顺序”,数字越小,显示越靠前,这让您可以方便地调整菜单项的排列次序。

通过这些配置,您可以在后台清晰地规划和构建出符合网站结构的多级导航体系。

二、在前端模板中显示多级导航

完成了后台的菜单配置后,接下来就是将这些精心设计的导航菜单呈现在网站的前端页面上。AnQiCMS 的模板引擎采用类似 Django 的语法,让前端开发人员能够直观地调用和渲染后台数据。

显示导航菜单的核心标签是 navList。使用这个标签,您可以根据之前在后台定义的“导航类别”来调用对应的菜单数据。

{% navList navs %}
    <ul>
        {%- for item in navs %}
            <li class="{% if item.IsCurrent %}active{% endif %}">
                <a href="{{ item.Link }}">{{item.Title}}</a>
                {%- if item.NavList %} {# 判断是否存在二级菜单 #}
                <dl>
                    {%- for inner in item.NavList %} {# 循环二级菜单 #}
                        <dd class="{% if inner.IsCurrent %}active{% endif %}">
                            <a href="{{ inner.Link }}">{{inner.Title}}</a>
                        </dd>
                    {% endfor %}
                </dl>
                {% endif %}
            </li>
        {% endfor %}
    </ul>
{% endnavList %}

在上面的代码片段中:

  • {% navList navs %} 会获取指定导航类别下的所有一级菜单项,并将其赋值给 navs 变量。
  • 外层的 {% for item in navs %} 循环用于遍历所有的一级菜单。
  • {{ item.Link }}{{ item.Title }} 分别用于输出菜单项的链接和显示名称。item.IsCurrent 则可以帮助您判断当前访问的页面是否与该菜单项匹配,从而添加 active 类名来实现高亮显示。
  • {%- if item.NavList %} 是判断当前一级菜单项下是否存在二级子菜单。如果存在,就会进入内层的 {% for inner in item.NavList %} 循环,遍历并显示所有二级菜单项,其调用方式与一级菜单项类似。

拓展应用:在导航下拉菜单中展示内容

AnQiCMS 的强大之处在于,您不仅可以显示简单的二级菜单,还可以在导航的下拉区域中进一步整合和展示其他动态内容,例如某个分类下的最新产品或子分类列表。这通常通过结合 navList 标签、archiveList (文档列表)标签和 categoryList (分类列表)标签来实现。

假设您希望在一个一级菜单(例如“产品中心”)下的二级菜单(例如“电子产品”)下拉时,直接显示“电子产品”分类下的部分最新产品:

<ul>
    {% navList navList with typeId=1 %} {# 假设typeId=1是您的主导航 #}
    {%- for item in navList %}
    <li>
        <a href="{{ item.Link }}">{{item.Title}}</a>
        {%- if item.NavList %}
        <ul class="nav-menu-child">
            {%- for inner in item.NavList %}
            <li>
                <a href="{{ inner.Link }}">{{inner.Title}}</a>
                {% if inner.PageId > 0 %} {# 判断二级菜单是否关联了某个分类ID #}
                    {% archiveList products with type="list" categoryId=inner.PageId limit="8" %} {# 调用该分类下的8个最新产品 #}
                    {% if products %}
                    <ul class="nav-menu-child-products">
                        {% for product in products %}
                        <li><a href="{{product.Link}}">{{product.Title}}</a></li>
                        {% endfor %}
                    </ul>
                    {% endif %}
                    {% endarchiveList %}
                {% endif %}
            </li>
            {% endfor %}
        </ul>
        {% endif %}
    </li>
    {% endfor %}
    {% endnavList %}
</ul>

在上述示例中,inner.PageId 能够获取到二级菜单所关联的分类ID,然后我们就可以利用这个ID,通过 archiveList 标签调用该分类下的最新产品进行展示。同样地,如果您想展示子分类列表,只需将 archiveList 替换为 categoryList 即可。

通过这些灵活的后台配置和模板标签,AnQiCMS 使得构建和管理多级网站导航变得直观而高效,无论您的网站结构有多复杂,都能轻松实现清晰的用户导向。


常见问题 (FAQ)

Q1: 为什么我的导航菜单只显示了两级,我想要更多层级的菜单? AnQiCMS 在后台“导航设置”中,默认支持最多两级的导航菜单结构(即一级菜单及其下一级的子菜单)。如果您的业务确实需要超过两级的菜单,通常我们会建议您重新考虑导航的复杂性,因为过深的层级可能会对用户体验和移动端适配造成挑战。如果仍有特殊需求,可以考虑结合“单页面”或“文档分类”页面,在页面的内容区域通过其他方式(例如侧边栏树形菜单)来展示更深层级的内容索引。

Q2: 如何在导航的下拉菜单中展示特定分类的最新文章或产品? 在前端模板中,您可以在 navList 标签循环一级或二级菜单项时,判断当前菜单项是否关联了某个分类(通过 item.PageIdinner.PageId 获取分类ID),然后利用 archiveList 标签(用于文章或产品)或 categoryList 标签(用于子分类)来动态调用并展示该分类下的内容。关键在于将菜单项的 PageId 作为 archiveListcategoryListcategoryId 参数传入。

Q3: 我可以为网站的不同区域(如头部、页脚)设置不同的导航菜单吗? 是的,AnQiCMS 完全支持这样做。您可以在“后台设置”下的“导航设置”中,通过“导航类别管理”创建多个独立的导航类别,例如“顶部导航”、“页脚导航”等。每个类别都可以拥有自己的菜单项和结构。在前端模板中,您只需在调用 navList 标签时,通过 typeId 参数指定对应的导航类别ID,即可在不同位置显示不同的菜单列表。