如何使用`navList`标签创建网站的主导航菜单,并支持两级下拉显示?

📅 👁️ 83

网站的主导航菜单是用户了解网站内容和结构的重要入口。安企CMS提供了强大且灵活的navList标签,帮助我们轻松创建和管理支持多级下拉的导航菜单,从而提升网站的用户体验和信息架构的清晰度。

第一步:在安企CMS后台配置导航菜单

在开始编写模板代码之前,我们需要在安企CMS的后台管理系统中设置好导航菜单的结构。

  1. 进入导航设置界面:登录到安企CMS后台,通过左侧菜单找到“后台设置”,点击“导航设置”进入管理页面。
  2. 创建或选择导航类别:系统默认会有一个“默认导航”类别,你可以直接使用它,也可以点击“导航类别管理”按钮,根据需要创建新的导航类别,例如“顶部主导航”、“页脚导航”等。不同的导航类别可以应用于网站的不同区域。
  3. 添加一级导航链接
    • 点击“添加导航链接”按钮。
    • 在弹出的表单中,首先选择“上级导航”为“顶级导航”,这表示你正在创建一个主菜单项。
    • 填写“显示名称”,这是菜单项在网站前台展示的文字。
    • 选择“链接类型”,安企CMS支持多种链接类型:
      • 内置链接:例如首页、文章模型首页、产品模型首页等,这些是系统预设的常用链接。
      • 分类页面链接:你可以选择网站中已存在的文章分类、产品分类或单个页面作为导航链接。
      • 外部链接:允许你自定义任意URL,无论是站内其他页面还是外部网站。
    • 根据需要,还可以填写“子标题名称”或“导航描述”,以在前端展示更丰富的信息。
    • 设置“显示顺序”,数字越小越靠前,用于控制菜单项的排列次序。
  4. 添加二级下拉导航链接
    • 再次点击“添加导航链接”按钮。
    • 关键一步:在“上级导航”中,选择你刚刚创建的一级导航菜单项。
    • 填写“显示名称”、“链接类型”等信息,与一级导航项类似。
    • 通过这种方式,你可以为每个一级导航项添加多个二级子菜单项。安企CMS的navList标签默认支持两级下拉菜单的展示。

完成后台配置后,记得点击“更新缓存”按钮,确保你的更改能够立即生效。

第二步:在前端模板中应用navList标签

一旦后台导航菜单结构设置完成,接下来就是如何在网站的前端模板中调用并展示这些导航。安企CMS的模板遵循Django模板引擎语法,这使得内容结构清晰且易于理解。

通常,你的网站模板文件存放在/template目录下,并使用.html作为文件后缀。

下面是一个使用navList标签创建支持两级下拉菜单的示例代码结构:

<nav class="main-navigation">
    <ul class="nav-list-level1">
        {% navList navs with typeId=1 %} {# 这里的typeId=1假设是你的主导航类别ID #}
            {%- for item in navs %} {# 遍历所有一级导航项 #}
            <li class="nav-item-level1 {% if item.IsCurrent %}active{% endif %}">
                <a href="{{ item.Link }}" class="nav-link-level1">{{item.Title}}</a>

                {%- if item.NavList %} {# 判断当前一级导航项是否有二级子导航 #}
                <ul class="nav-list-level2">
                    {%- for inner in item.NavList %} {# 遍历所有二级导航项 #}
                    <li class="nav-item-level2 {% if inner.IsCurrent %}active{% endif %}">
                        <a href="{{ inner.Link }}" class="nav-link-level2">{{inner.Title}}</a>
                        {# 如果需要更多层级的下拉菜单,可以在这里继续嵌套,
                           但需要自定义逻辑或CSS支持,navList标签默认支持两级。
                           这里可以结合其他标签丰富内容,如显示该分类下的文章列表或子分类。 #}
                        {% if inner.PageId > 0 %} {# 假设该二级导航是某个分类或页面链接 #}
                            {% categoryList categories with parentId=inner.PageId %} {# 获取该分类的子分类 #}
                            {% if categories %}
                            <ul class="nav-list-level3">
                                {% for subCategory in categories %}
                                <li><a href="{{ subCategory.Link }}">{{ subCategory.Title }}</a></li>
                                {% endfor %}
                            </ul>
                            {% endif %}
                            {% endcategoryList %}
                        {% endif %}
                    </li>
                    {% endfor %}
                </ul>
                {% endif %}
            </li>
            {% endfor %}
        {% endnavList %}
    </ul>
</nav>

代码解释:

  • {% navList navs with typeId=1 %}:这是调用导航列表的核心标签。navs是定义的一个变量,它将承载后台配置的所有导航数据。typeId=1指定了要调用的导航类别ID,如果你创建了多个导航类别,请替换为对应的ID。
  • {%- for item in navs %}:这是一个for循环,用于遍历navs变量中的每一个一级导航项。item变量代表当前遍历到的一级导航项的数据。{%-的使用是为了避免输出额外的空白行,让生成的HTML更整洁。
  • {{ item.Link }}{{ item.Title }}:分别输出了当前导航项的链接地址和显示名称。item还包含SubTitle(子标题)、Description(描述)等字段,你可以根据设计需要进行调用。
  • {% if item.IsCurrent %}IsCurrent是一个布尔值,如果当前导航项是用户正在访问的页面,它将为true。这通常用于为当前活跃的菜单项添加active类,以便通过CSS进行高亮显示。
  • {%- if item.NavList %}:这是判断当前一级导航项是否包含子导航的关键。item.NavList是一个数组,如果其中有数据,则表示存在二级导航,我们将进入下一层循环。
  • {%- for inner in item.NavList %}:这是一个嵌套的for循环,用于遍历当前一级导航项下的所有二级导航项。inner变量代表当前遍历到的二级导航项的数据。其结构与item类似,也包含LinkTitleIsCurrent等字段。
  • {% if inner.PageId > 0 %}:这是一个进阶用法,演示了如何在二级菜单中展示更丰富的内容。inner.PageId会返回该导航项如果链接到某个分类或单页面时的ID。通过判断PageId是否存在,我们可以进一步嵌套categoryListarchiveList标签,来动态加载该分类下的子分类或文章列表,实现更强大的下拉菜单功能,而不仅仅是简单的链接。

进阶技巧与注意事项

  1. CSS样式是关键:上述代码仅提供了HTML结构。要实现美观的两级下拉效果,你需要编写相应的CSS样式来控制菜单的布局、显示/隐藏、动画效果等。
  2. 动态内容填充:在二级导航项内部,如果其链接类型是“分类页面链接”,你可以利用inner.PageId结合{% archiveList %}(文档列表标签)或{% categoryList %}(分类列表标签),将与该二级导航项关联的文章列表或下一级分类直接呈现在下拉菜单

相关文章

`tagDataList`标签如何显示特定标签下的所有相关文档列表,并支持分页?

在安企CMS的日常内容管理中,我们常常需要对网站内容进行更灵活的组织和展示。除了传统的分类系统,标签(Tag)为我们提供了另一种强大的内容关联方式。它能将不同分类但主题相近的文档聚合在一起,为用户带来更聚焦的浏览体验。今天,我们就来深入了解安企CMS中一个非常实用的模板标签——`tagDataList`,看看它如何帮助我们显示特定标签下的所有相关文档列表,并轻松实现分页。 ###

2025-11-08

如何通过`pageList`和`pageDetail`标签有效管理和显示网站的单页面内容?

在网站运营中,单页面内容扮演着不可或缺的角色,它们通常承载着“关于我们”、“联系我们”、“服务条款”、“隐私政策”等重要信息,既需要清晰展示,又要求管理便捷。AnQiCMS 提供了 `pageList` 和 `pageDetail` 这两个强大的模板标签,帮助我们高效地管理和显示这些单页面内容。 ### 管理单页面内容:后台操作指引 AnQiCMS

2025-11-08

`categoryDetail`标签如何获取并显示特定分类的名称、描述、Banner图和缩略图?

在AnQiCMS的模板制作中,我们经常需要获取并展示特定分类的详细信息,例如分类的名称、描述,甚至是预设的Banner图和缩略图。`categoryDetail`标签正是为此而生,它能帮助我们轻松地从数据库中提取这些数据,并在网站前端进行灵活展示。 ### 理解 `categoryDetail` 标签的核心作用 `categoryDetail`标签的主要功能是获取单个分类的详细数据

2025-11-08

如何使用`categoryList`标签构建多级分类导航或在内容区域展示分类列表?

在安企CMS中,妥善组织网站内容分类是提升用户体验和网站可维护性的重要一环。无论是构建清晰的多级导航菜单,帮助用户快速定位信息,还是在页面内容区域巧妙地展示不同分类的内容,`categoryList`标签都是实现这些功能的核心工具。 ### 核心标签:`categoryList` 简介 `categoryList`标签是安企CMS模板引擎中专门用于获取网站分类列表的标签。它非常灵活

2025-11-08

`breadcrumb`标签如何生成

在网站内容日益丰富的今天,用户常常需要在网站中穿梭于不同页面。为了帮助访客了解他们当前所处的位置,并提供便捷的返回路径,面包屑导航(Breadcrumb Navigation)应运而生。它就像地图上的路径指示,让用户一目了然地知道“我从哪里来,要到哪里去”。 AnQiCMS 深知面包屑导航对于用户体验和网站结构的重要性,因此在模板标签中内置了专门的 `breadcrumb` 标签

2025-11-08

安企CMS如何自定义内容模型以实现多样化的内容展示?

在构建网站内容时,我们常常发现各种信息类型都有其独特的展示需求。一篇新闻稿件可能需要标题、作者、发布日期和正文;一份产品介绍则可能涵盖名称、型号、价格、库存以及详细参数;而一个案例展示或许更侧重于项目名称、客户、解决方案和成果图片。传统的CMS系统,往往提供固定不变的内容发布模板,这在面对多样化的业务场景时,便显得捉襟见肘,难以灵活应对。 安企CMS正是为了解决这一痛点而生

2025-11-08

如何为不同类型的文章(如新闻、产品)设置独特的显示布局?

在网站运营中,内容不仅仅是信息本身,其呈现方式也同样关键。为不同类型的内容(如新闻、产品介绍)设置独特的显示布局,能极大地提升用户体验、强化品牌形象,甚至对搜索引擎优化(SEO)也有积极作用。安企CMS(AnQiCMS)在这方面提供了非常灵活和强大的功能,让你可以轻松为各类内容打造专属的视觉风格。 ### 内容模型:布局定制的基础 安企CMS首先通过“内容模型”的概念

2025-11-08

安企CMS的多语言支持如何影响前端内容的显示和切换?

AnQiCMS 提供了强大的多语言支持能力,这对于希望拓展全球市场、为不同语种用户提供本地化内容体验的网站来说至关重要。它不仅影响着网站前端内容的呈现方式,也为用户提供了流畅的语言切换体验。理解其工作原理,能帮助我们更好地规划和运营多语言网站。 在 AnQiCMS 中,多语言支持主要体现在两个层面:一是系统内置文本或模板中固定文本的翻译,二是实际内容(如文章、产品、单页面等)的独立管理和展示

2025-11-08