如何使用`categoryList`标签获取并循环展示指定内容模型下的分类列表?

📅 👁️ 64

作为一名长期深耕AnQiCMS内容运营的专家,我深知分类列表在网站结构和用户体验中的重要性。灵活运用categoryList标签,能够帮助我们高效地组织内容,构建清晰的导航体系,并为读者提供更精准的内容发现路径。下面,我将详细阐述如何使用categoryList标签来获取并循环展示指定内容模型下的分类列表。

使用 AnQiCMS 的 categoryList 标签获取并循环展示指定内容模型下的分类列表

在AnQiCMS的模板开发中,categoryList标签是用于获取网站分类数据核心工具。它允许我们根据不同的需求,如内容模型、层级关系等,精确地提取和展示分类信息。这对于构建动态导航、分类列表页侧边栏、内容筛选器等功能至关重要。

理解 categoryList 标签的核心功能

categoryList标签的主要作用是从数据库中检索出符合特定条件的分类数据。它支持多种参数来精细控制数据的获取范围和方式,并以可循环遍历的对象形式返回结果,方便我们在模板中进行渲染。AnQiCMS的模板引擎语法类似Django,因此在使用categoryList时,我们通常会结合{% for ... in ... %}循环标签来遍历获取到的分类数据。

关键参数解析:指定内容模型与层级控制

要实现获取指定内容模型下的分类列表,moduleId参数是核心。同时,parentId参数则用于控制分类的层级关系,帮助我们构建多级分类导航。

moduleId:指定内容模型的唯一标识

moduleId参数用于筛选出属于特定内容模型的分类。在AnQiCMS中,内容模型是我们自定义内容结构的基础,例如“文章”模型、“产品”模型等。每个内容模型都有一个唯一的ID。

  • 使用方法示例: moduleId="1"moduleId="2"。如果“文章”模型的ID是1,“产品”模型的ID是2,那么moduleId="1"将只获取文章分类,而moduleId="2"则只获取产品分类。
  • 应用场景: 当我们需要在网站的不同区域(例如文章列表页的侧边栏显示文章分类,产品列表页的侧边栏显示产品分类)展示不同内容模型的分类时,此参数必不可少。

parentId:控制分类的层级关系

parentId参数用于控制我们想要获取的分类所属的层级。

  • 获取顶级分类: 设置parentId="0"将获取所有内容模型下的顶级分类。当我们想构建主导航菜单时,这非常有用。
  • 获取子分类: 在循环遍历父级分类时,我们可以使用当前父级分类的Id作为子级分类的parentId,从而实现多级分类的嵌套显示。
  • 获取兄弟分类:parentId设置为"parent"(仅在当前页面是分类列表页时有效),可以获取当前分类的兄弟分类。

limit:控制显示数量与偏移

limit参数用于限制返回的分类数量。它支持两种模式:

  • 固定数量: limit="10"表示最多显示10条分类。
  • 偏移模式: limit="2,10"表示从第2条记录开始,获取10条分类数据。这在某些特殊布局中需要跳过前几条记录时非常实用。

其他辅助参数

  • all:获取所有层级的分类all=true时,categoryList会获取指定moduleId下的所有分类,无论其层级如何。这在需要全面展示所有分类,而不关心层级结构时非常有用。
  • siteId:多站点数据调用 对于使用AnQiCMS多站点管理功能的用户,siteId参数允许我们指定从哪个站点获取分类数据。一般情况下,如果只管理一个站点,此参数无需填写。

循环遍历与数据访问

categoryList标签返回的是一个可循环的对象集合(通常命名为categories或您自定义的变量名)。我们使用{% for ... in ... %}循环来访问其中的每一个分类项。在循环体内,每个分类项通常被命名为item,并提供了多种字段供我们调用。

item 对象的常用字段:

  • Id 分类ID,唯一标识符。
  • Title 分类名称,用于在前端显示。
  • Link 分类对应的URL链接,方便跳转。
  • Description 分类简介或描述。
  • ParentId 父级分类的ID。
  • Logo / Thumb 分类的大图或缩略图地址,可用于分类导航的图标或背景。
  • Spacer 用于展示层级关系的缩进前缀(例如:--),配合多级分类显示效果。
  • HasChildren 布尔值,指示当前分类是否有子分类。这在构建动态菜单时非常有用。
  • IsCurrent 布尔值,指示当前分类是否为当前页面所在的分类。可用于高亮当前导航项。
  • ArchiveCount 当前分类下包含的文档数量。

实战应用示例

1. 获取“文章”模型下的所有顶级分类

以下代码将获取ID为1的内容模型(假设为“文章”模型)下的所有顶级分类,并将其名称和链接打印出来。

<nav class="main-categories">
    <h3>文章分类</h3>
    <ul>
        {% categoryList articleCategories with moduleId="1" parentId="0" %}
            {% for item in articleCategories %}
                <li {% if item.IsCurrent %}class="active"{% endif %}>
                    <a href="{{ item.Link }}">{{ item.Title }}</a>
                </li>
            {% endfor %}
        {% endcategoryList %}
    </ul>
</nav>

2. 实现多级分类导航(以“产品”模型为例)

这个例子展示了如何构建一个两级导航,其中顶级分类来自“产品”模型(假设moduleId="2"),并且在其下方显示其直接子分类。

<ul class="product-menu">
    {% categoryList productRootCategories with moduleId="2" parentId="0" %}
        {% for rootCategory in productRootCategories %}
            <li {% if rootCategory.IsCurrent %}class="active"{% endif %}>
                <a href="{{ rootCategory.Link }}">{{ rootCategory.Title }}</a>
                {% if rootCategory.HasChildren %}
                    <ul class="submenu">
                        {% categoryList productSubCategories with parentId=rootCategory.Id %}
                            {% for subCategory in productSubCategories %}
                                <li {% if subCategory.IsCurrent %}class="active"{% endif %}>
                                    <a href="{{ subCategory.Link }}">{{ subCategory.Title }}</a>
                                </li>
                            {% endfor %}
                        {% endcategoryList %}
                    </ul>
                {% endif %}
            </li>
        {% endfor %}
    {% endcategoryList %}
</ul>

3. 结合文档列表,实现分类下的内容展示

这个场景常见于首页或特定栏目页,需要显示每个分类以及该分类下的最新文档。假设我们有一个文章模型(moduleId="1")。

<section class="latest-articles">
    <h2>最新文章</h2>
    {% categoryList mainArticleCategories with moduleId="1" parentId="0" %}
        {% for category in mainArticleCategories %}
            <div class="category-block">
                <h3><a href="{{ category.Link }}">{{ category.Title }}</a></h3>
                <ul class="article-list">
                    {% archiveList articlesInCategory with type="list" categoryId=category.Id limit="5" %}
                        {% for article in articlesInCategory %}
                            <li>
                                <a href="{{ article.Link }}">
                                    {% if article.Thumb %}<img src="{{ article.Thumb }}" alt="{{ article.Title }}" />{% endif %}
                                    <h4>{{ article.Title }}</h4>
                                    <p>{{ article.Description|truncatechars:80 }}</p>
                                    <span class="date">{{ stampToDate(article.CreatedTime, "2006-01-02") }}</span>
                                </a>
                            </li>
                        {% endfor %}
                    {% else %}
                        <li>该分类下暂无文章。</li>
                    {% endarchiveList %}
                </ul>
            </div>
        {% endfor %}
    {% endcategoryList %}
</section>

总结

categoryList标签是AnQiCMS模板系统中一个功能强大且灵活的工具。通过精确

相关文章

AnQiCMS模板中如何实现动态的面包屑导航功能,并自定义首页文本?

作为一名资深的安企CMS网站运营人员,我深知高质量的内容和卓越的用户体验是网站成功的基石。在AnQiCMS的强大功能支持下,我们不仅能高效管理内容,还能通过精细化的模板定制,为用户提供流畅、直观的浏览体验。今天,我们就来深入探讨如何在AnQiCMS模板中实现动态面包屑导航,并灵活自定义首页文本,从而提升网站的可用性和搜索引擎友好度。 ###

2025-11-06

如何动态生成当前页面的SEO标题、关键词和描述,并支持网站名称后缀?

作为一名深谙AnQiCMS运营之道的资深内容管理专家,我深知搜索引擎优化(SEO)对于网站流量和用户留存的重要性。网站的SEO标题、关键词和描述(通常简称为TDK)是搜索引擎理解页面内容、用户决定是否点击的关键因素。AnQiCMS提供了一套强大且灵活的机制,允许我们动态地生成这些重要的SEO元素,并能够方便地集成网站名称作为后缀,以增强品牌认知。 ### 动态TDK的基石

2025-11-06

AnQiCMS模板如何调用并展示后台配置的联系方式(如电话、邮箱、社交媒体)?

作为一名深谙安企CMS运营之道的资深内容工作者,我深知企业对外展示联系方式的重要性。这不仅关乎客户能否便捷地与您取得联系,更是建立信任、促进业务往来的基础。安企CMS为网站运营人员提供了一套直观且灵活的解决方案,让您无需编写复杂的代码,即可轻松管理并展示各类联系信息。 以下,我将详细阐述如何在AnQiCMS模板中调用并展示后台配置的联系方式,包括电话、邮箱和各种社交媒体链接

2025-11-06

在AnQiCMS模板中如何获取并显示网站的全局配置信息(如名称、Logo)?

作为一位精通AnQiCMS的网站运营人员,我深知在模板中高效、准确地获取和显示网站的全局配置信息,对于网站的维护、品牌一致性以及用户体验至关重要。AnQiCMS提供了直观且强大的模板标签,能够轻松实现这一目标。 在AnQiCMS模板中,获取并显示网站的全局配置信息,例如网站名称、Logo、备案号等,主要依赖于系统内置的`system`标签

2025-11-06

如何获取当前访问分类的详细信息,包括标题、链接、描述和自定义字段?

作为一名经验丰富的安企CMS网站运营者,我深知高质量、易于获取的内容信息对于网站用户体验和搜索引擎优化的重要性。在安企CMS中,获取当前访问分类的详细信息是网站构建中一个非常基础且频繁需求的功能,无论是用于页面标题、导航面包屑,还是分类页的详细介绍,都需要精准地调用这些数据。 安企CMS为我们提供了强大而灵活的模板标签体系,使得获取当前访问分类的标题、链接、描述乃至自定义字段变得极其简便

2025-11-06

AnQiCMS模板如何获取所有单页面的列表或特定单页面的详细内容?

作为一名资深的安企CMS网站运营人员,我深知高质量、结构清晰的内容对于网站用户体验和搜索引擎优化的重要性。单页面是网站基础信息展示的核心,例如“关于我们”、“联系方式”和“服务条款”等。在AnQiCMS中,通过强大的模板标签系统,我们可以灵活地获取并展示这些单页面的内容。 接下来,我将详细阐述如何在AnQiCMS模板中获取所有单页面的列表以及特定单页面的详细内容。 ###

2025-11-06

如何使用`archiveList`标签获取文章列表,并支持按ID、浏览量或自定义排序?

作为一名资深的安企CMS网站运营人员,我深知高效的内容管理对于吸引和留住用户至关重要。安企CMS提供的模板标签体系是其强大之处,其中`archiveList`标签更是日常内容展示的核心。它能够帮助我们灵活地从数据库中提取文章、产品等内容,并以我们希望的方式进行排序和展示。 ### 理解 `archiveList` 标签的核心作用 在安企CMS的模板设计中

2025-11-06

如何在AnQiCMS模板中为文章列表实现完整的分页功能?

作为一位深谙安企CMS (AnQiCMS) 运营之道的专家,我深知一套流畅、用户友好的网站体验对于吸引和留住用户至关重要。内容列表的分页功能是任何内容密集型网站的基石,它不仅优化了用户浏览体验,更是搜索引擎优化的重要环节。在AnQiCMS中,通过其强大的模板标签系统,实现文章列表的完整分页功能变得高效且灵活。 ### 文章列表分页功能概述 在AnQiCMS模板中

2025-11-06