如何使用AnQiCMS标签在导航菜单中显示分类和文档?

📅 👁️ 71

在AnQiCMS中,网站的导航菜单不仅是用户探索内容、理解网站结构的重要入口,更是搜索引擎抓取和理解网站层级关系的关键。利用AnQiCMS强大的模板标签功能,我们可以轻松地将分类和文档动态地呈现在导航菜单中,从而构建一个既美观又高效的网站导航。

一、后台准备工作:搭建导航骨架

在深入模板代码之前,我们需要在AnQiCMS的后台进行一些基础配置。毕竟,前端标签所能获取并展示的数据,都源于后台的精心组织。

  1. 创建和管理导航类别 首先,进入AnQiCMS后台,找到“后台设置”下的“导航设置”。系统默认会有一个“默认导航”类别,但您也可以根据需要自定义更多的导航类别,例如“页脚导航”、“侧边栏导航”等。每一个类别都代表了一组独立的导航菜单,方便您在网站不同位置调用。

  2. 添加导航链接,关联分类和文档 在选定或创建好导航类别后,接下来是添加具体的导航链接。点击“添加新导航”或编辑现有导航项,您会看到“链接类型”的选项。这是关键所在:

    • “内置链接”:适用于指向首页、各种模型(如文章模型、产品模型)的首页等。
    • “分类页面链接”:这是我们主要用于在导航中显示分类和文档的方式。当您选择此类型时,系统会允许您从已有的分类或单个页面中选择一个作为导航的目标。当您选中一个分类作为导航链接后,AnQiCMS会在内部为其分配一个 PageId,这个ID在模板中将非常有用。
    • “外部链接”:如果需要链接到站外或其他自定义URL,可以使用此选项。

    通过“分类页面链接”选择您的文章分类、产品分类或特定的单页面,并设置好“显示名称”,就为前端导航打下了坚实的基础。您可以设置一级导航,也可以通过选择“上级导航”来创建二级下拉菜单。AnQiCMS目前支持最多两级导航链接。

二、模板层面:利用标签灵活呈现内容

后台配置完成后,我们就需要在模板文件中运用AnQiCMS的标签来动态展示这些导航项了。AnQiCMS的模板语法类似Django,变量用双花括号 {{变量}},逻辑控制用单花括号和百分号 {% 标签 %}

在您的模板文件(通常是 bash.html 或特定的导航头部文件)中,我们可以使用 navListcategoryListarchiveList 这几个核心标签。

  1. 基础导航菜单:仅显示一级导航链接 最简单的导航菜单只包含后台设置的一级导航项。我们可以直接使用 navList 标签来获取它们。

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

    这里,navs 是我们为 navList 标签定义的变量,通过 for 循环遍历 navs 数组,item.Link 提供链接地址,item.Title 显示导航名称。item.IsCurrent 则可以帮助我们判断当前页面是否为该导航项,从而添加 active 类名以高亮显示。

  2. 进阶导航菜单:下拉显示子分类 如果您的导航设计需要实现二级下拉菜单,且二级菜单的内容是某个一级分类下的子分类,那么可以在 navList 的循环中嵌套 categoryList

    假设您的后台导航中,一级导航“产品中心”链接到了一个产品主分类,而其下的二级导航则链接到了该产品主分类的几个子分类。当一级导航的 item.NavList 存在时,我们就可以进一步遍历这些二级导航项。如果二级导航项是“分类页面链接”,那么 inner.PageId 就会对应到该分类的ID。

    <ul>
        {% navList navList with typeId=1 %} {# 假设您的主导航类别ID是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 %} {# 检查是否关联了分类/页面 #}
                        {% categoryList categories with parentId=inner.PageId %} {# 获取二级分类下的子分类 #}
                        {% if categories %}
                        <ul>
                            {% 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>
    

    这段代码中,item.NavList 用来循环后台配置的二级导航。如果某个二级导航项 inner 关联了一个分类 (inner.PageId > 0),我们就可以利用 categoryList 标签,通过 parentId=inner.PageId 来动态获取该分类下的子分类,从而实现更深层次的下拉菜单展示。

  3. 高级导航菜单:下拉显示文档列表 除了显示子分类,您可能还希望在下拉菜单中直接展示某个分类下的文档列表,例如“新闻中心”下拉显示最新的几篇新闻。这同样可以通过在 navList 中嵌套 archiveList 来实现。

    <ul>
        {% navList navList with 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>
                    {% archiveList products with type="list" categoryId=inner.PageId limit="8" %} {# 获取该分类下的最新8篇文档 #}
                    {% if products %}
                    <ul class="nav-menu-child-child">
                        {% for product in products %}
                        <li><a href="{{product.Link}}">{{product.Title}}</a></li>
                        {% endfor %}
                    </ul>
                    {% endif %}
                    {% endarchiveList %}
                </li>
                {% endfor %}
            </ul>
            {% endif %}
        </li>
        {% endfor %}
        {% endnavList %}
    </ul>
    

相关文章

如何控制AnQiCMS评论列表的显示排序和分页?

在安企CMS中,高效地管理和展示网站评论对于提升用户互动、优化内容体验至关重要。评论列表的显示顺序和分页设置,直接影响着用户浏览评论时的体验。本文将为您详细解析如何在AnQiCMS中精准控制评论的排序方式和分页行为。 ### 理解评论列表的模板结构 首先,我们需要明确评论列表在AnQiCMS中的位置。根据系统的设计约定,评论列表通常在您当前模板目录下的 `comment/list.html`

2025-11-07

AnQiCMS文档列表如何根据分类ID、推荐属性进行筛选和显示?

在AnQiCMS中管理网站内容,经常需要根据不同的条件来展示文档列表。无论是想在首页展示某个特定分类的最新文章,还是在侧边栏突出显示一些推荐内容,系统都提供了灵活的工具来帮助我们实现。今天,我们就来聊聊如何巧妙地利用分类ID和推荐属性,精准地筛选并显示您想要的文档列表。 ### 精准定位:按分类ID筛选文档列表 当您的网站内容日益丰富,清晰的分类结构就显得尤为重要

2025-11-07

如何在AnQiCMS分类页显示分类简介、Banner图和缩略图?

在网站运营中,分类页不仅是内容的聚合,更是用户了解网站结构、深入探索特定主题的重要入口。一个设计良好、信息丰富的分类页,能显著提升用户体验和搜索引擎优化(SEO)效果。AnQiCMS 提供了灵活的功能,让我们可以轻松地在分类页上展示分类简介、Banner图和缩略图,让您的网站分类页焕然一新。 ### 理解 AnQiCMS 的分类页与模板结构 在 AnQiCMS 中

2025-11-07

如何显示AnQiCMS的单页面内容和相关图片?

在网站运营中,我们经常需要创建一些独立页面,比如“关于我们”、“联系方式”或“服务介绍”等。这些页面的内容相对固定,不属于常规的文章或产品列表,安企CMS(AnQiCMS)将它们统一归类为“单页面”,并提供了非常便捷的管理和展示方式。通过这套系统,您可以轻松地发布和更新这些内容,同时灵活地控制它们的显示样式和图片呈现。 --- ### 创建与管理您的单页面内容 首先

2025-11-07

AnQiCMS如何配置页面的Title、Keywords、Description以优化搜索引擎显示?

在网站运营中,让您的内容在搜索引擎中脱颖而出是获取流量的关键一步。而页面标题(Title)、关键词(Keywords)和描述(Description),也就是我们常说的TDK,正是与搜索引擎“对话”的重要元素。AnQiCMS作为一个专注于企业内容管理的系统,深知TDK配置对SEO的价值,因此提供了灵活且强大的功能,帮助我们轻松优化网站在搜索引擎中的显示。 ### TDK配置为何如此重要

2025-11-07

如何利用AnQiCMS的Canonical URL功能避免内容重复显示问题?

在网站运营中,我们常常会遇到一个棘手的问题:内容重复显示。这并不是指你手动复制粘贴了文章,而是由于多种技术原因,导致同一份内容可以通过多个不同的URL地址被访问到。对于搜索引擎来说,这会造成困扰,它们不确定哪个URL才是内容的“官方”版本,从而可能分散页面的排名权重,降低爬虫效率,甚至影响网站的整体SEO表现。幸运的是,AnQiCMS提供了一个强大而便捷的功能——Canonical

2025-11-07

如何使用AnQiCMS内置的TDK标签动态设置页面SEO信息?

作为一位资深的网站运营者,我深知搜索引擎优化(SEO)对于网站可见度和流量增长的重要性。而在SEO工作中,TDK(Title、Description、Keywords)标签的合理设置,无疑是基石中的基石。一个清晰、精准的TDK,不仅能帮助搜索引擎更好地理解页面内容,也能在搜索结果中吸引用户的点击。安企CMS(AnQiCMS)在TDK标签的动态设置上提供了非常灵活且强大的功能

2025-11-07

如何在AnQiCMS中正确配置伪静态规则以生成对用户和搜索引擎友好的URL?

在网站运营中,一个对用户和搜索引擎都友好的URL结构至关重要。它不仅让访问者能一眼了解页面内容,也方便搜索引擎抓取和理解您的网站,这直接影响着您网站的SEO表现和用户体验。安企CMS(AnQiCMS)深知这一点,因此内置了强大的伪静态功能,让您轻松定制网站的URL。 接下来,我们将一起探索如何在AnQiCMS中正确配置伪静态规则,生成那些既美观又实用的URL。 ## 伪静态URL

2025-11-07