`categoryList`标签如何获取并显示AnQiCMS文章或产品分类的列表?

📅 👁️ 64

在AnQiCMS中构建一个功能完善、内容丰富的网站,分类是组织内容不可或缺的一部分。无论是展示文章、产品、服务,还是搭建导航菜单,清晰的分类结构都能极大提升用户体验和网站的可维护性。今天,我们就来深入了解AnQiCMS中一个非常实用且灵活的标签——categoryList,它能帮助您轻松获取并显示文章或产品分类的列表。

categoryList标签是AnQiCMS模板引擎中的一把利器,它的主要作用是根据您指定的条件,从数据库中提取出符合要求的分类数据,并以列表的形式供您在前端页面展示。通过合理运用这个标签,您可以搭建出各种复杂的分类导航、内容聚合模块,让网站的内容组织变得井井有条。

categoryList标签概览:轻松驾驭分类数据

这个标签的基本使用格式非常直观:

{% categoryList 变量名称 with 参数 %}
    {# 在这里循环输出分类数据 #}
{% endcategoryList %}

您需要为分类列表指定一个变量名称(例如categoriesproductCategories等),这样在标签内部,您就可以通过这个变量来访问每一个分类的具体信息。with关键字后面跟着一系列的参数,这些参数就是您筛选和定制分类列表的关键。

接下来,我们详细解读categoryList标签的几个核心参数,让您能够根据实际需求灵活地获取分类数据。

核心参数解析:定制您的分类列表

  1. moduleId:指定内容模型,精准定位分类来源 在AnQiCMS中,内容可以归属于不同的“模型”,比如文章模型(通常ID为1)、产品模型(通常ID为2)等。moduleId参数就是告诉categoryList您想获取哪个模型下的分类。

    • 示例
      • moduleId="1":获取所有文章分类。
      • moduleId="2":获取所有产品分类。

    如果您不确定某个模型的ID,可以在AnQiCMS后台的“内容管理” -> “内容模型”中查看。

  2. parentId:构建层级关系,灵活控制分类深度 分类往往是多层级的,parentId参数正是用来控制您要获取的分类在层级结构中的位置。

    • parentId="0":获取顶级分类 这是最常见的用法,例如用于网站的主导航菜单。它会列出指定模型下的所有一级分类。
      • 示例{% categoryList categories with moduleId="1" parentId="0" %}
    • 不指定parentId:获取当前分类的下级分类 当您在某个分类详情页或分类列表页时,不指定parentId会自动获取当前分类的所有直接子分类。这非常适合构建侧边栏的二级/三级导航。
      • 示例{% categoryList subCategories %}(假设当前页面是一个分类页面)
    • parentId="parent":获取当前分类的兄弟分类 这个参数在某些特定场景下非常有用,比如您想在某个分类页面显示其同级的所有分类。这个参数仅在当前页面是分类列表页或详情页时有效。
      • 示例{% categoryList brotherCategories with parentId="parent" %}
  3. all:获取所有分类,不拘泥于层级 如果您需要列出指定模型下的所有分类,无论它们处于哪个层级,都可以使用all=true。这在某些聚合页面或全局站点地图中可能会用到。

    • 示例{% categoryList allCategories with moduleId="1" all=true %}
  4. limit:控制显示数量,优化页面布局 有时您不需要显示所有分类,而只想显示前几个热门分类或指定数量的分类。limit参数可以帮助您实现这个目标。它支持两种模式:

    • 单数字limit="10",表示显示前10个分类。
    • “偏移量,数量”limit="2,5",表示从第2个分类开始(索引从0开始,所以实际是第3个),显示5个分类。
    • 示例{% categoryList topCategories with moduleId="1" parentId="0" limit="5" %}
  5. siteId:多站点场景的应用 如果您的AnQiCMS部署了多个站点,并且您希望在一个站点中调用另一个站点的分类数据,可以通过siteId参数来指定目标站点的ID。这在需要跨站点数据整合时非常有用。一般情况下,如果您只有一个站点,可以忽略此参数。

    • 示例{% categoryList otherSiteCategories with moduleId="1" parentId="0" siteId="2" %}

掌握分类数据:item变量中的宝藏

categoryList标签成功获取到分类列表后,您可以通过循环遍历变量名称(如categories)来访问每个分类的详细信息。在循环内部,每个分类对象通常命名为item(您可以自定义,如category),它包含了丰富的字段,供您在模板中展示:

  • item.Id:分类的唯一标识ID。
  • item.Title:分类的名称,这是最常显示的内容。
  • item.Link:分类的访问链接,用于构建可点击的导航。
  • item.Description:分类的简短描述,可能用于SEO或在分类列表中展示。
  • item.Content:分类的详细内容(如果后台有填写),可能会在分类详情页显示。
  • item.ParentId:当前分类的上级分类ID,用于判断层级关系。
  • item.Logo:分类的大图或Banner图地址。
  • item.Thumb:分类的缩略图地址,常用于在列表中显示小图标或小图。
  • item.Spacer:一个特殊的前缀,通常用于在多级分类列表中生成缩进,以视觉上区分层级。
  • item.HasChildren:一个布尔值(truefalse),指示当前分类是否有子分类。这对于构建动态菜单或根据是否有子分类显示不同内容非常关键。
  • item.IsCurrent:一个布尔值,指示当前分类是否是当前页面所在的分类。常用于在导航中添加active类名,高亮显示。
  • item.ArchiveCount:当前分类下包含的文档(文章或产品)数量。

实战演练:categoryList的妙用

掌握了参数和字段后,我们来看看一些常见的实战场景:

1. 展示网站顶部主导航(顶级分类)

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

这个例子展示了如何获取文章模型下的所有顶级分类,并在当前分类时添加active样式。

2. 构建侧边栏多级分类菜单

<aside class="sidebar-nav">
    <h3>产品分类</h3>
    <ul>
        {% categoryList productMainCategories with moduleId="2" parentId="0" %}
            {% for mainCat in productMainCategories %}
                <li class="{% if mainCat.IsCurrent %}active{% endif %}">
                    <a href="{{ mainCat.Link }}">{{ mainCat.Title }}</a>
                    {% if mainCat.HasChildren %}
                        <ul>
                            {% categoryList subCategories with parentId=mainCat.Id %} {# 获取当前主分类的子分类 #}
                                {% for subCat in subCategories %}
                                    <li class="{% if subCat.IsCurrent %}active{% endif %}">
                                        <a href="{{ subCat.Link }}">{{ subCat.Title }}</a>
                                    </li>
                                {% endfor %}
                            {% endcategoryList %}
                        </ul>
                    {% endif %}
                </li>
            {% endfor %}
        {% endcategoryList %}
    </ul>
</aside>

这个例子利用了HasChildren和嵌套的categoryList标签,动态地构建了两级产品分类菜单。

3. 在首页显示不同分类下的最新文章或产品

这是一种常见的内容聚合方式,让访问者一眼看到网站的最新动态。

{% categoryList featuredCategories with moduleId="1" parentId="0" limit="3" %}
    {% for cat in featuredCategories %}
        <section class="category-section">
            <h3><a href="{{ cat.Link }}">{{ cat.Title }}</a></h3>
            <p>{{ cat.Description }}</p>
            <ul class="article-list">
                {% archiveList latestArticles with type="list" categoryId=cat.Id limit="5" %}
                    {% for article in latestArticles %}
                        <li>
                            <a href="{{ article.Link }}">
                                <img src="{{ article.Thumb }}" alt="{{ article.Title }}">
                                <h4>{{ article.Title }}</h4>
                                <time>{{ stampToDate(article.CreatedTime, "2006-01-02") }}</time>
                            </a>
                        </li>
                    {% empty %}
                        <li>该分类暂无文章。</li>
                    {% endfor %}
                {% endarchiveList %}
            </ul>
        </section>
    {% endfor %}
{% endcategoryList %}

这个示例展示了如何先获取3个顶级文章分类,然后通过archiveList标签在每个分类下获取最新的5篇文章。

一些小提示:

  • 标签闭合:请务必确保{% categoryList %}标签与{% endcategoryList %}成对出现,否则会导致模板解析错误。
  • 变量名一致:在{% categoryList 变量名称 %}中定义的变量名,应与内部{% for %}循环或直接访问字段时使用的变量名保持一致。
  • 结合categoryDetail:如果需要获取某个特定分类的更多详细信息,例如其Banner图或自定义字段,可以在循环内部结合使用categoryDetail标签,传入item.Id即可。
  • 性能考量:虽然categoryList非常灵活,但在一个页面中过度嵌套或大量调用可能会影响页面加载速度。在设计复杂结构时,请注意优化查询和页面渲染效率。

通过以上介绍,相信您已经对AnQiCMS的categoryList

相关文章

`breadcrumb`标签如何显示AnQiCMS页面的面包屑导航路径?

在网站运营中,清晰的导航是提升用户体验、帮助搜索引擎理解网站结构的关键一环。面包屑导航(Breadcrumb Navigation)正是这样一种直观的辅助工具,它能够明确显示用户当前所处页面的层级路径,让访问者随时知道“我身在何处,又能去向何方”。对于使用安企CMS(AnQiCMS)来构建和管理网站的用户来说,实现这样的导航既简单又高效,这得益于其内置的`breadcrumb`标签。 ###

2025-11-08

`navList`标签如何在AnQiCMS网站上构建并显示多级导航菜单?

网站导航是用户访问网站时的重要向导,它不仅帮助用户快速找到所需信息,更是网站结构清晰、用户体验友好的体现。在AnQiCMS中,构建灵活多样的导航菜单是一项相对简单且高效的任务,这主要得益于其强大的`navList`标签。无论是简单的单层菜单,还是复杂的二级下拉菜单,`navList`标签都能提供强大的支持。 ### `navList`标签

2025-11-08

`tdk`标签如何在AnQiCMS中动态生成并显示页面的Title、Keywords和Description?

在网站运营中,Title、Keywords和Description(简称TDK)是搜索引擎优化(SEO)的基石。它们不仅向搜索引擎描述了页面内容,也直接影响了用户在搜索结果页面的点击意愿。AnQiCMS作为一个专注于内容管理的系统,深知TDK的重要性,因此提供了一套强大而灵活的机制,让用户能够轻松地对网站TDK进行动态生成与精细化管理。 ### AnQiCMS如何管理TDK

2025-11-08

`contact`标签如何在AnQiCMS页面中显示联系人、电话、地址和社交媒体链接?

在网站运营中,清晰准确地展示联系方式对于建立用户信任、促进沟通交流至关重要。AnQiCMS 提供了一个非常便捷的方式来管理和展示这些信息,那就是通过 `contact` 标签。这个标签能帮助我们轻松地在网站的任何页面上调用预设的联系人姓名、电话、地址乃至社交媒体链接,无需硬编码,大大提高了内容管理效率。 ### 第一步:在AnQiCMS后台配置联系方式 在我们开始使用 `contact`

2025-11-08

`categoryDetail`标签如何显示AnQiCMS特定分类的详细信息,如简介或Banner图?

在安企CMS的模板开发中,有效地展示分类的详细信息是提升网站用户体验和SEO表现的关键。`categoryDetail` 标签正是为此而生,它允许我们灵活地获取并呈现特定分类的各种信息,从基础的简介文字到富有视觉冲击力的Banner图片,都能轻松驾驭。 ### 核心功能解析:`categoryDetail`标签概览 `categoryDetail` 标签主要用于获取单个分类的详细数据

2025-11-08

`pageList`标签如何获取并显示AnQiCMS所有单页面的列表?

在安企CMS中,单页面是一种非常灵活的内容形式,它不依赖于复杂的分类或模型结构,常常用于发布“关于我们”、“联系方式”、“服务介绍”等独立且内容相对固定的页面。这些页面的特点是内容独立,通常只需要一个页面来承载其信息。当您需要在网站的特定位置,比如底部导航、侧边栏或者某个专题页面上,展示这些单页面的列表时,安企CMS提供了专门的`pageList`标签,让这一操作变得简单直观。 ###

2025-11-08

`pageDetail`标签如何显示AnQiCMS单页面的标题、内容和缩略图?

AnQiCMS 提供了一种高效管理独立页面的方式,例如“关于我们”、“联系方式”等。这些页面通常拥有独立的标题、内容和图片,需要精确地在前端模板中呈现。`pageDetail` 标签便是安企CMS为实现这一目的而设计的核心工具,它允许我们轻松地从后台数据库中提取并展示单页面的详细信息。 ### 理解 `pageDetail` 标签:单页面内容的展示核心 在AnQiCMS中

2025-11-08

`archiveList`标签如何获取并显示AnQiCMS指定分类、模型的文档列表?

在安企CMS中,高效地管理和展示网站内容是提升用户体验和搜索引擎排名的关键。为了实现这一目标,我们经常需要根据特定的分类或内容模型来组织和显示文档列表。这时,`archiveList`标签就成为了我们手中强大的工具。它能帮助我们灵活地从数据库中提取所需内容,并以多样化的方式呈现。 ### `archiveList`标签

2025-11-08