作为一名资深的网站运营专家,我很清楚在内容管理中,如何高效地展示数据对用户体验和网站整体表现至关重要。安企CMS(AnQiCMS)凭借其灵活强大的模板引擎,让我们能轻松实现这些看似复杂的需求。今天,我们就来聊聊如何在分类列表页面,清晰地展示每个分类下有多少篇文档,这不仅能让访客一目了然,也能在一定程度上提升网站的SEO表现。

安企CMS:巧用模板标签,在分类列表页展示文档数量

在网站运营中,分类列表页面是访客探索网站内容的重要入口。如果能在每个分类的名称旁,直观地显示该分类下包含了多少篇文档,无疑会极大地提升用户体验:访客可以更快地找到感兴趣的内容量大的分类,运营者也能通过数据反馈优化内容策略。安企CMS提供了非常便捷的方式来实现这一功能,得益于其Django风格的模板语法和丰富内置标签。

理解安企CMS的模板基础

安企CMS的模板系统采用了类似Django的语法,这意味着我们可以通过特定的标签来控制页面逻辑(如循环、条件判断)和输出变量。核心思想是:{% ... %} 用于执行操作(如for循环),{{ ... }} 用于输出变量的值。掌握这一点,我们就能轻松驾驭模板定制。

核心利器:categoryList 标签与 ArchiveCount 属性

要在一个页面上展示所有分类及其文档数量,我们首先需要获取分类列表。安企CMS提供了 categoryList 标签,它专门用于拉取分类数据。更棒的是,在 categoryList 标签循环出的每个分类对象(通常命名为 item)中,都内置了一个 ArchiveCount 属性,这个属性直接存储了该分类下的文档总数。

这意味着,您无需进行复杂的数据库查询或额外计算,只需简单调用 item.ArchiveCount,就能获取到当前分类的文档数量。

下面是一个基础的代码示例,它展示了如何使用 categoryList 标签获取分类并显示文档数量:

{% categoryList categories with moduleId="1" parentId="0" %}
    <ul class="category-list">
        {% for item in categories %}
            <li class="category-item">
                <a href="{{ item.Link }}">
                    {{ item.Title }} ({{ item.ArchiveCount }} 篇文章)
                </a>
            </li>
        {% endfor %}
    </ul>
{% endcategoryList %}

在这段代码中:

  • {% categoryList categories with moduleId="1" parentId="0" %}:我们调用了 categoryList 标签,将获取到的分类列表赋值给 categories 变量。moduleId="1" 通常指定了文章模型(根据您后台配置可能有所不同),parentId="0" 则表示我们想要获取所有顶级分类。
  • {% for item in categories %}:我们遍历 categories 列表中的每一个分类,并将当前分类对象命名为 item
  • {{ item.Title }} ({{ item.ArchiveCount }} 篇文章):这里就是实现核心功能的关键。item.Title 输出分类名称,而 item.ArchiveCount 则输出了该分类下的文档数量,我们用括号和“篇文章”作了进一步说明,让显示更加友好。

具体操作步骤

  1. 定位模板文件: 通常,分类列表页面对应的模板文件会根据您的网站设计有所不同。如果您是在自定义某个内容模型的分类列表页,例如文章模型的列表页,那么该模板文件可能位于 template/您的模板目录/{模型table}/list.html,或者像 design-director.md 中提到的,采用扁平化模式的 {模型table}_list.html。您也可以在后台的“文档分类”设置中,查看每个分类具体使用的“分类模板”名称。

  2. 插入标签代码: 找到负责渲染分类列表的部分,这通常是一个循环结构。将上述示例代码片段,根据您的HTML结构和样式需求,巧妙地嵌入到每个分类的显示位置。例如,在 <li> 标签内部,<a> 标签旁边,或者任何您认为合适的地方。

  3. 根据需求调整显示:

    • 处理零文档分类: 有时某个分类下可能还没有文档。您可以选择显示 “分类名称 (0 篇文章)“,也可以使用条件判断 {% if item.ArchiveCount > 0 %} 来决定是否显示文档数量,或者在数量为零时显示不同的提示。
      
      <a href="{{ item.Link }}">
          {{ item.Title }}
          {% if item.ArchiveCount > 0 %}
              ({{ item.ArchiveCount }} 篇文章)
          {% else %}
              (暂无文档)
          {% endif %}
      </a>
      
    • 样式化: 使用CSS为显示文档数量的部分添加样式,使其更突出或更好地融入整体设计。

更灵活的运用与思考

  • 首页或其他页面: 这种显示文档数量的方法并非仅限于分类列表页。您可以在网站的任何地方,如首页、侧边栏或页脚,通过调用 categoryList 标签,并指定 moduleIdparentId,来展示任意分类及其文档数量。
  • 单一分类详情: 如果您只需要获取单个分类(而非列表)的文档数量,可以使用 categoryDetail 标签,并通过 idtoken 参数指定分类,然后获取 ArchiveCount 属性。
    
    {% categoryDetail currentCategory with id="10" %}
        当前分类 {{ currentCategory.Title }} 下有 {{ currentCategory.ArchiveCount }} 篇文章。
    {% endcategoryDetail %}
    

安企CMS的这种设计理念,极大地简化了内容呈现的复杂性。通过 categoryList 标签内置的 ArchiveCount 属性,您可以轻松实现分类列表页的文档数量显示,为用户提供更清晰、更有价值的导航信息。


常见问题 (FAQ)

  1. 问:为什么我按照上述方法操作后,文档数量显示为0,但我明明有文档呢? 答:如果显示为0,请首先检查categoryList标签中moduleId参数是否正确,它应该对应您实际使用的内容模型ID(例如文章通常是1,产品可能是2等)。其次,请确认这些文档是否已发布且状态正常(非草稿、非回收站),并且确实归属于您正在显示文档数量的那些分类。最后,确认文档的分类ID与您期望的分类匹配。

  2. 问:我可以在网站的首页或者侧边栏显示分类下的文档数量吗? 答:完全可以。categoryList 标签是通用的,您可以在网站的任何模板文件(包括 index.html 或侧边栏的 partial/sidebar.html 等)中使用它。只需按照文章中介绍的方法,通过 moduleIdparentId 参数获取您想要的分类列表,然后循环显示 item.Titleitem.ArchiveCount 即可。

  3. 问:ArchiveCount 统计的文档数量是只包含当前分类下的文档,还是会递归统计所有子分类的文档? 答:安企CMS的 ArchiveCount 属性通常是统计直接归属于当前分类的文档数量,而不包含其子分类下的文档。如果您需要统计某个分类及其所有子分类下的总文档数,这可能需要更复杂的逻辑,例如在控制器层进行递归查询,或利用AnQiCMS未来可能提供的更高级聚合标签来实现。但对于大多数场景,直接统计当前分类的文档数量已经足够满足需求。