在内容管理系统中,有效地组织和展示内容是提升用户体验和网站SEO表现的关键。AnQiCMS 提供了强大且灵活的模板标签,让开发者能够轻松地构建出功能丰富的页面布局。其中,调用分类列表并展示其下的文章数量,是网站导航和内容概览中非常常见且实用的需求。这不仅能帮助用户快速了解各分类的内容量,还能为搜索引擎提供清晰的网站结构信息。

理解 `categoryList` 标签的核心作用

在 AnQiCMS 的模板体系中,categoryList 标签是用于获取网站分类列表的关键工具。通过这个标签,我们可以根据不同的需求,灵活地提取出我们所需的分类信息。例如,如果您想获取所有文章的顶级分类,或者某个特定父分类下的子分类,categoryList 都能轻松应对。

在使用 categoryList 标签时,您会发现它支持一些重要的参数来精确定位所需分类:

  • moduleId: 这是非常重要的一个参数,它允许您指定获取哪种内容模型的分类。比如,如果您想列出所有“文章”类型的分类,您可以设置 moduleId="1"(假设文章模型的ID是1)。类似地,产品分类可能对应 moduleId="2"。这样,您可以确保只显示与特定内容类型相关的分类。
  • parentId: 这个参数用于指定父级分类的ID。当设置为 parentId="0" 时,它将返回所有顶级分类。如果您想获取某个特定分类下的子分类,只需将该分类的ID作为 parentId 的值。

categoryList 标签执行后,会返回一个包含多个分类对象的数组。我们通常会为这个数组指定一个变量名,例如 categories,然后通过循环遍历这些分类对象来展示它们。

轻松获取分类下的文章数量:`ArchiveCount` 字段

AnQiCMS 模板标签的便利之处在于,当您使用 categoryList 获取分类列表时,每个返回的分类对象中都直接包含了一个名为 ArchiveCount 的字段。这个字段无需额外查询,它会自动统计并存储该分类(以及其子分类,如果 child 参数默认为 true 的话)下所关联的文章总数。

这意味着,您在遍历分类列表时,可以直接访问 item.ArchiveCount 来获取并显示每个分类下的文章数量,而不需要进行复杂的二次数据处理。这极大地简化了模板的开发工作,提高了效率。

实战代码示例:展示分类列表与文章数量

现在,让我们通过具体的代码片段来演示如何实现这一功能。

示例一:展示所有顶级文章分类及其文章数量

假设您的网站有多个顶级文章分类,您希望在侧边栏或主导航中显示这些分类的名称,并清晰地标明每个分类目前包含多少篇文章。

<nav class="category-navigation">
    <h3>探索我们的文章分类</h3>
    <ul class="category-list">
        {% categoryList categories with moduleId="1" parentId="0" %}
            {% for item in categories %}
                <li>
                    <a href="{{ item.Link }}" title="查看{{ item.Title }}下的所有文章">
                        {{ item.Title }}
                        <span class="article-count">({{ item.ArchiveCount }} 篇文章)</span>
                    </a>
                </li>
            {% empty %}
                <li>暂无分类内容。</li>
            {% endfor %}
        {% endcategoryList %}
    </ul>
</nav>

这段代码首先使用 categoryList 标签获取 moduleId 为 “1”(通常代表文章模型)且 parentId 为 “0”(即顶级分类)的所有分类。然后,它会遍历这些分类,为每个分类生成一个链接,并显示其标题 (item.Title) 和文章数量 (item.ArchiveCount)。item.Link 则会自动生成该分类的访问链接。如果没有任何分类,empty 部分的内容将会显示。

示例二:展示多级分类结构并统计各级文章数量

在某些情况下,您的分类可能存在多级嵌套。您可能希望在显示父级分类的同时,也能看到其子分类,并分别展示各自的文章数量。AnQiCMS 的 categoryList 标签也能很好地支持这种场景。

<div class="multi-level-categories">
    <h2>内容导航</h2>
    {% categoryList topCategories with moduleId="1" parentId="0" %}
        <ul class="main-categories">
            {% for topItem in topCategories %}
                <li>
                    <a href="{{ topItem.Link }}">{{ topItem.Title }}</a> 
                    <span class="count">({{ topItem.ArchiveCount }} 篇文章)</span>
                    
                    {% if topItem.HasChildren %} {# 判断当前分类是否有子分类 #}
                        <ul class="sub-categories">
                            {% categoryList subCategories with parentId=topItem.Id %}
                                {% for subItem in subCategories %}
                                    <li>
                                        <a href="{{ subItem.Link }}">{{ subItem.Title }}</a> 
                                        <span class="count">({{ subItem.ArchiveCount }} 篇文章)</span>
                                        {# 如果还需要更深层级,可以继续嵌套 categoryList #}
                                    </li>
                                {% endfor %}
                            {% endcategoryList %}
                        </ul>
                    {% endif %}
                </li>
            {% endfor %}
        </ul>
    {% empty %}
        <p>没有找到任何分类。</p>
    {% endcategoryList %}
</div>

在这个例子中,我们首先获取顶级分类(topCategories)。在遍历每个顶级分类时,我们利用 topItem.HasChildren 这个布尔值来判断该分类是否存在子分类。如果存在,我们便会再次使用 categoryList 标签,并以当前顶级分类的 ID 作为 parentId,来获取并展示其下的子分类(subCategories),同样展示它们的文章数量。这种结构可以灵活地扩展到任意深度,只要您的分类体系支持。

内容运营的价值考量

在网站运营中,清晰地展示分类及其文章数量具有多重价值:

  • 提升用户体验: 用户在浏览网站时,能够直观地看到每个分类的内容丰富度,有助于他们快速定位感兴趣的主题,减少盲目探索的时间。
  • 优化内容发现: 对于新用户或初次访问特定页面的用户,文章数量提供了内容厚度的预期,鼓励他们深入浏览。
  • 辅助SEO策略: 清晰的分类结构和内容数量暗示了网站内容的广度和深度,这对于搜索引擎理解网站主题和抓取收录非常有益。同时,分类页面的文章数量可以作为页面权重分配的参考。
  • 指导内容规划: 运营团队可以根据各分类的文章数量,判断哪些分类内容相对薄弱,从而有针对性地进行内容补充和优化。

AnQiCMS 的模板标签设计充分考虑了这些运营需求,将复杂的数据调用简化为直观易用的标签,让网站内容的组织和展示变得前所未有的便捷。通过灵活运用 categoryListArchiveCount 等标签,您可以为用户提供更优质的浏览体验,并为网站的长期发展奠定坚实基础。


常见问题 (FAQ)

1. 如果某个分类下没有文章,ArchiveCount 会显示什么?

当某个分类下没有任何关联的文章时,ArchiveCount 字段将自然地显示为 0。这意味着您无需进行额外的条件判断来处理空分类的情况,模板会直接输出零,这对于用户来说也一目了然。

2. 除了文章数量,categoryList 标签还能获取分类的哪些信息?

categoryList 标签返回的每个分类对象非常丰富。除了 IdTitleLinkArchiveCount 外,您还可以访问 Description(分类简介)、ParentId(上级分类ID)、Logo(分类大图)、Thumb(分类缩略图)、HasChildren(是否有子分类)等多种信息。这使得您在设计分类展示时拥有极高的自由度。

3. 我能否只获取某个特定内容模型下的分类,而不影响其他模型?

当然可以。categoryList 标签的 moduleId 参数正是为此目的而设。通过设置 moduleId="您内容模型的ID",您可以精确地指定只获取文章、产品或其他自定义内容模型下的分类列表,而不会混淆不同类型的内容。例如,如果您希望在某个页面上只显示产品分类,就可以将 moduleId 设置为产品模型的 ID。