作为一名资深的网站运营专家,我很清楚在内容管理中,如何高效地展示数据对用户体验和网站整体表现至关重要。安企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则输出了该分类下的文档数量,我们用括号和“篇文章”作了进一步说明,让显示更加友好。
具体操作步骤
定位模板文件: 通常,分类列表页面对应的模板文件会根据您的网站设计有所不同。如果您是在自定义某个内容模型的分类列表页,例如文章模型的列表页,那么该模板文件可能位于
template/您的模板目录/{模型table}/list.html,或者像design-director.md中提到的,采用扁平化模式的{模型table}_list.html。您也可以在后台的“文档分类”设置中,查看每个分类具体使用的“分类模板”名称。插入标签代码: 找到负责渲染分类列表的部分,这通常是一个循环结构。将上述示例代码片段,根据您的HTML结构和样式需求,巧妙地嵌入到每个分类的显示位置。例如,在
<li>标签内部,<a>标签旁边,或者任何您认为合适的地方。根据需求调整显示:
- 处理零文档分类: 有时某个分类下可能还没有文档。您可以选择显示 “分类名称 (0 篇文章)“,也可以使用条件判断
{% if item.ArchiveCount > 0 %}来决定是否显示文档数量,或者在数量为零时显示不同的提示。<a href="{{ item.Link }}"> {{ item.Title }} {% if item.ArchiveCount > 0 %} ({{ item.ArchiveCount }} 篇文章) {% else %} (暂无文档) {% endif %} </a> - 样式化: 使用CSS为显示文档数量的部分添加样式,使其更突出或更好地融入整体设计。
- 处理零文档分类: 有时某个分类下可能还没有文档。您可以选择显示 “分类名称 (0 篇文章)“,也可以使用条件判断
更灵活的运用与思考
- 首页或其他页面: 这种显示文档数量的方法并非仅限于分类列表页。您可以在网站的任何地方,如首页、侧边栏或页脚,通过调用
categoryList标签,并指定moduleId和parentId,来展示任意分类及其文档数量。 - 单一分类详情: 如果您只需要获取单个分类(而非列表)的文档数量,可以使用
categoryDetail标签,并通过id或token参数指定分类,然后获取ArchiveCount属性。{% categoryDetail currentCategory with id="10" %} 当前分类 {{ currentCategory.Title }} 下有 {{ currentCategory.ArchiveCount }} 篇文章。 {% endcategoryDetail %}
安企CMS的这种设计理念,极大地简化了内容呈现的复杂性。通过 categoryList 标签内置的 ArchiveCount 属性,您可以轻松实现分类列表页的文档数量显示,为用户提供更清晰、更有价值的导航信息。
常见问题 (FAQ)
问:为什么我按照上述方法操作后,文档数量显示为0,但我明明有文档呢? 答:如果显示为0,请首先检查
categoryList标签中moduleId参数是否正确,它应该对应您实际使用的内容模型ID(例如文章通常是1,产品可能是2等)。其次,请确认这些文档是否已发布且状态正常(非草稿、非回收站),并且确实归属于您正在显示文档数量的那些分类。最后,确认文档的分类ID与您期望的分类匹配。问:我可以在网站的首页或者侧边栏显示分类下的文档数量吗? 答:完全可以。
categoryList标签是通用的,您可以在网站的任何模板文件(包括index.html或侧边栏的partial/sidebar.html等)中使用它。只需按照文章中介绍的方法,通过moduleId和parentId参数获取您想要的分类列表,然后循环显示item.Title和item.ArchiveCount即可。问:
ArchiveCount统计的文档数量是只包含当前分类下的文档,还是会递归统计所有子分类的文档? 答:安企CMS的ArchiveCount属性通常是统计直接归属于当前分类的文档数量,而不包含其子分类下的文档。如果您需要统计某个分类及其所有子分类下的总文档数,这可能需要更复杂的逻辑,例如在控制器层进行递归查询,或利用AnQiCMS未来可能提供的更高级聚合标签来实现。但对于大多数场景,直接统计当前分类的文档数量已经足够满足需求。