安企CMS如何在分类页面嵌套显示该分类下的文章列表?

📅 👁️ 52

在网站运营中,内容分类页面承载着组织信息、引导用户浏览的重要职责。一个设计合理、内容丰富的分类页面不仅能提升用户体验,还能优化搜索引擎抓取效率。对于安企CMS(AnQiCMS)的用户来说,在分类页面中嵌套显示该分类下的文章列表,是一个非常基础且常用的功能。本篇文章将详细为您介绍如何利用安企CMS强大的模板标签,轻松实现这一目标。

理解分类页面与内容模型

在开始之前,我们先来简单回顾一下安企CMS中内容组织的两大核心概念:内容模型分类

  • 内容模型: 它是您网站上内容的骨架,例如“文章模型”、“产品模型”等。每个模型可以定义自己的字段(如文章有“作者”、“来源”,产品有“价格”、“库存”等)。您发布的所有内容都必须归属于一个特定的内容模型。这在后续调用文章列表时,通过moduleId参数来指定模型,显得尤为重要。
  • 分类: 则是对内容进行归类整理的方式。您可以为每个内容模型创建独立的分类体系,例如“文章”模型下有“新闻动态”、“行业资讯”,而“产品”模型下可能有“手机产品”、“电脑产品”等。

当用户访问一个分类页面时,他们期待看到的是该分类下所有相关的文章或产品列表。安企CMS提供了灵活的模板机制,允许我们自定义分类页面的展示方式。

准备您的分类列表模板文件

安企CMS的模板系统非常灵活。通常,分类列表页面的模板文件会存放在/template/您的模板目录/{模型table}/下。

  • 默认分类列表模板: 通常是{模型table}/list.html。例如,如果您的分类属于“文章”模型,那么默认模板可能是article/list.html
  • 自定义分类模板: 如果您希望某个特定的分类(比如“公司新闻”)拥有独特的布局,可以在后台为该分类指定一个自定义模板,例如article/list-news.htmlarticle/list-10.html(其中10是分类ID)。

无论您使用哪种模板文件,接下来的步骤都将在此文件中进行操作。

核心实现:在分类页面显示文章列表

要在分类页面中嵌套显示该分类下的文章列表,我们将主要使用到以下几个安企CMS的模板标签:

  1. categoryDetail 标签: 用于获取当前分类页面的详细信息,最重要的是获取当前分类的ID。
  2. archiveList 标签: 这是获取文章列表的核心标签,它能根据多种条件(包括分类ID、模型ID等)筛选并列出文章。
  3. pagination 标签: 如果文章数量较多,分页是必不可少的,这个标签可以帮助我们快速生成分页导航。

下面我们通过一个详细的代码示例来演示如何将这些标签组合使用。假设我们要在一个文章分类页面(例如article/list.html)中显示该分类下的文章列表,并支持分页。

实战代码示例:

{# 假设这是您的文章分类列表页面模板文件:/template/default/article/list.html #}

{% extends 'base.html' %} {# 继承基础布局,如包含头部、底部等公共部分 #}

{# 获取当前分类的详细信息,这里将分类信息存储在名为 'category' 的变量中 #}
{% categoryDetail category %}
    {% set currentCategoryId = category.Id %} {# 提取当前分类的ID,方便后续使用 #}
    {% set currentModuleId = category.ModuleId %} {# 提取当前分类所属的模型ID #}

    {% block title %}
        <title>{{ category.Title }} - 文章列表</title> {# 设置页面标题为分类名称 #}
    {% endblock %}

    {% block content %}
        <div class="category-header">
            <h1>{{ category.Title }}</h1> {# 显示分类名称 #}
            <p>{{ category.Description }}</p> {# 显示分类描述 #}
            {# 您也可以在此处显示分类的Banner图或缩略图 #}
            {% if category.Logo %}
                <img src="{{ category.Logo }}" alt="{{ category.Title }}">
            {% endif %}
        </div>

        <div class="article-list-section">
            <h2>最新文章</h2>
            {# 使用 archiveList 标签获取当前分类下的文章列表 #}
            {# type="page" 表示启用分页,limit="10" 表示每页显示10篇文章 #}
            {# categoryId 使用我们之前获取到的 currentCategoryId #}
            {# moduleId 使用我们之前获取到的 currentModuleId #}
            {% archiveList archives with type="page" categoryId=currentCategoryId moduleId=currentModuleId limit="10" %}

                {% if archives %} {# 判断是否有文章 #}
                    <ul class="article-list">
                        {% for item in archives %}
                            <li class="article-item">
                                <a href="{{ item.Link }}">
                                    <h3>{{ item.Title }}</h3>
                                    {% if item.Thumb %}
                                        <img src="{{ item.Thumb }}" alt="{{ item.Title }}" class="article-thumb">
                                    {% endif %}
                                    <p class="article-description">{{ item.Description }}</p>
                                    <div class="article-meta">
                                        <span>发布日期: {{ stampToDate(item.CreatedTime, "2006-01-02") }}</span>
                                        <span>阅读量: {{ item.Views }}</span>
                                    </div>
                                </a>
                            </li>
                        {% endfor %}
                    </ul>

                    {# 插入分页导航 #}
                    <div class="pagination-area">
                        {% pagination pages with show="5" %} {# 最多显示5个页码按钮 #}
                        <ul>
                            {# 首页链接 #}
                            <li {% if pages.FirstPage.IsCurrent %}class="active"{% endif %}><a href="{{ pages.FirstPage.Link }}">{{ pages.FirstPage.Name }}</a></li>
                            {# 上一页链接 #}
                            {% if pages.PrevPage %}
                                <li><a href="{{ pages.PrevPage.Link }}">{{ pages.PrevPage.Name }}</a></li>
                            {% endif %}
                            {# 中间页码 #}
                            {% for pageItem in pages.Pages %}
                                <li {% if pageItem.IsCurrent %}class="active"{% endif %}><a href="{{ pageItem.Link }}">{{ pageItem.Name }}</a></li>
                            {% endfor %}
                            {# 下一页链接 #}
                            {% if pages.NextPage %}
                                <li><a href="{{ pages.NextPage.Link }}">{{ pages.NextPage.Name }}</a></li>
                            {% endif %}
                            {# 尾页链接 #}
                            <li {% if pages.LastPage.IsCurrent %}class="active"{% endif %}><a href="{{ pages.LastPage.Link }}">{{ pages.LastPage.Name }}</a></li>
                        </ul>
                        {% endpagination %}
                    </div>

                {% else %}
                    <p class="no-content">当前分类下暂无文章。</p> {# 没有文章时显示提示信息 #}
                {% endif %}

            {% endarchiveList %}
        </div>
    {% endblock %}
{% endcategoryDetail %}

代码解析:

  • {% categoryDetail category %} 这个标签获取当前URL对应的分类信息,并将其赋值给category变量。这样,我们就能在模板中通过category.Titlecategory.Description等访问分类的各种属性。
  • {% set currentCategoryId = category.Id %} 这里我们提取了分类的Id,因为archiveList标签需要这个ID来精确筛选文章。同时,category.ModuleId也提供了当前分类所属的内容模型ID。
  • {% archiveList archives with ... %}
    • archives:这是我们给文章列表数据起的名字,您可以在循环中用item来代表每一篇文章。
    • type="page"非常重要! 只有设置为"page"archiveList才会返回分页所需的所有数据,并允许pagination标签正常工作。如果只是想简单列出几篇文章,不带分页,可以使用type="list"
    • categoryId=currentCategoryId:将之前获取的当前分类ID传递给文章列表标签,确保只显示本分类的文章。
    • moduleId=currentModuleId:指定文章所属的内容模型ID。在多内容模型网站中,这是确保正确内容被调用的关键。
    • limit="10":设定每页显示10篇文章。您可以根据需要调整这个数字。
  • {% for item in archives %} 循环遍历archiveList返回的文章数组,item代表每一篇文章对象。
  • **{{ item.Link }}{{ item.Title }}、`{{ item.

相关文章

在AnQiCMS文章列表循环中,如何判断并突出显示第一篇文章?

在网站内容展示中,我们经常会遇到需要对文章列表中的第一个元素进行特殊处理的需求。无论是为了视觉上的突出、实现独特的布局设计,还是给予首篇文章更高的关注度,AnQiCMS 都提供了灵活而强大的模板标签来帮助我们轻松实现这一目标。 AnQiCMS 采用类似 Django 模板引擎的语法规则,在处理内容列表时,其循环遍历标签 `for` 扮演着核心角色。当我们使用 `archiveList`

2025-11-08

如何在AnQiCMS文章列表或详情页显示文章的阅读浏览量?

在网站内容运营中,文章的阅读浏览量是一个重要的指标,它能帮助我们了解内容的受欢迎程度和用户兴趣点。AnQiCMS 提供了便捷的方式,让您可以在文章列表页或详情页直观地展示这些数据。 ### 理解 AnQiCMS 的浏览量机制 AnQiCMS 作为一款功能完善的内容管理系统,内置了自动记录文章浏览量的机制。每当用户访问一篇 AnQiCMS 发布的文章时

2025-11-08

AnQiCMS模板中如何格式化显示文章的发布和更新时间?

在安企CMS的网站模板中,展示文章的发布和更新时间是提升用户体验和内容管理效率的关键环节。清晰地呈现这些时间信息,不仅能帮助访问者快速了解内容的时效性,也有助于搜索引擎更好地抓取和索引。AnQiCMS 提供了一个强大且灵活的模板标签,让您能够根据需要,将时间戳格式化为各种易于阅读的日期和时间格式。 ### 核心机制:`stampToDate` 标签 安企CMS的模板系统内置了一个名为

2025-11-08

如何在安企CMS文章内容页自动生成并显示目录(TOC)?

在AnQiCMS中,为文章内容页自动生成并显示目录(Table of Contents, 简称TOC)不仅能显著提升用户的阅读体验,还能帮助搜索引擎更好地理解文章结构,从而对SEO产生积极影响。借助AnQiCMS强大且灵活的模板系统,实现这一功能比您想象的要简单。 ### AnQiCMS如何支持自动生成目录? AnQiCMS在处理文章内容时,提供了获取文章结构化信息的能力

2025-11-08

如何在AnQiCMS中根据推荐属性(Flag)过滤显示特定文章列表?

安QiCMS以其灵活高效的内容管理能力,为运营者提供了丰富的工具来组织和展示网站内容。其中,“推荐属性”(Flag)就是一项非常实用的功能,它让您可以轻松地对文章进行分类标记,进而在网站前端实现内容的精准筛选和动态展示。本文将详细介绍如何在AnQiCMS中利用这些推荐属性,过滤并显示您想要的特定文章列表。 ### 深入理解AnQiCMS的推荐属性(Flag) AnQiCMS的推荐属性

2025-11-08

AnQiCMS如何显示所有顶级分类的列表?

在网站建设和内容运营中,清晰的分类导航是用户体验的基础,也是内容组织的核心。对于使用 AnQiCMS 的用户来说,如何高效地展示网站的所有顶级分类列表,是构建网站结构的第一步。AnQiCMS 凭借其灵活的模板引擎和丰富的内置标签,让这项任务变得异常简单和直观。 ### 理解分类结构与核心标签 在 AnQiCMS 中,内容是按照“内容模型”和“分类”来组织的

2025-11-08

如何在AnQiCMS分类页面显示其下属的子分类列表?

在AnQiCMS中,您可以通过灵活的模板标签轻松地在分类页面显示其下属的子分类列表。这对于构建清晰的网站结构、提升用户导航体验以及优化搜索引擎爬取效率都至关重要。AnQiCMS强大的模板系统和其Django风格的标签语法,使得这类动态内容的展示变得直观且高效。 要实现在分类页面显示其下属的子分类列表,主要涉及以下几个步骤: **一

2025-11-08

AnQiCMS导航菜单如何实现多级分类的嵌套展示?

在网站建设中,一个清晰、易用的导航菜单对于提升用户体验和网站整体结构至关重要。安企CMS(AnQiCMS)在导航菜单的管理上提供了灵活的设置,让用户可以轻松实现多级分类的嵌套展示,从而更好地组织网站内容,引导访客探索。 要实现多级分类的嵌套导航,我们主要通过安企CMS后台的“导航设置”功能来完成。这项功能位于“后台设置”区域,它不仅能管理网站的顶部主导航,还能根据需要创建各种自定义导航

2025-11-08