如何高效显示AnQiCMS的文章列表,并支持多种排序、筛选和分页方式?

📅 👁️ 75

在AnQiCMS中高效地展示文章列表,并支持多种排序、筛选与分页方式,是内容管理的核心环节。理解其模板标签的灵活运用,能帮助您构建出高度定制化且用户体验友好的内容展示页面。

要实现这一目标,我们主要依赖AnQiCMS强大的模板标签体系,特别是核心的archiveList 标签,配合pagination 标签以及各种辅助性过滤器和逻辑控制。

一、核心:archiveList 标签的使用

archiveList 标签是获取和展示文章(或其他内容模型)列表的基础。它如同一个数据查询器,能够根据您设定的条件从数据库中提取文章。

在模板中,您可以这样引入并使用它:

{% archiveList archives with type="list" limit="10" %}
    {# 在这里循环展示每篇文章的详细信息 #}
{% endarchiveList %}

在这里,archives 是您自定义的一个变量名,用于存储获取到的文章列表。type="list" 表示我们获取的是一个固定数量的文章列表。limit="10" 则限定了只显示最新的10篇文章。

{% for item in archives %} 这样的循环中,item 变量会包含每篇文章的多种信息,例如 item.Title(标题)、item.Link(链接)、item.Description(简介)、item.Views(浏览量)和 item.CreatedTime(发布时间)等。这些字段可以被灵活地用于构建列表的显示内容。

二、实现文章列表的灵活展示

仅仅展示固定数量的文章列表是不够的,我们需要能够根据用户的需求或运营策略,对文章进行排序和筛选。

1. 智能排序

archiveList 标签提供了 order 参数,让您可以轻松地控制文章的排列顺序。

  • 按发布时间排序: 默认情况下,文章通常按ID降序(即最新发布)排列,您可以显式指定 order="id desc"
  • 按浏览量排序: 如果您想展示热门文章,可以设置为 order="views desc"
  • 按后台自定义排序: 某些内容可能需要人工干预排序,AnQiCMS支持 order="sort desc"

例如,要显示10篇浏览量最高的文章:

{% archiveList archives with type="list" limit="10" order="views desc" %}
    {# 循环展示文章 #}
{% endarchiveList %}

2. 丰富的筛选方式

筛选功能是内容展示个性化的关键。AnQiCMS提供了多种筛选途径。

  • 基于分类与属性筛选: 您可以使用 categoryId 参数来显示特定分类下的文章,例如 categoryId="1"。如果文章被赋予了推荐属性(如头条[h]、推荐[c]等),则可以通过 flag="c" 参数来筛选。如果您希望排除某些分类或属性,还可以使用 excludeCategoryIdexcludeFlag 参数。

    例如,显示文章模型(moduleId="1")下,ID为5的分类中的所有推荐文章:

    {% archiveList articles with moduleId="1" categoryId="5" flag="c" type="list" %}
        {# 循环展示推荐文章 #}
    {% endarchiveList %}
    
  • 全文搜索筛选: 对于用户输入的搜索关键词,archiveListq 参数能够派上用场。通常,搜索页面会将用户输入的关键词通过URL参数 q 传递,archiveList 会自动捕获并根据文章标题进行匹配。

    例如,搜索结果页面:

    {% archiveList searchResults with type="page" q=urlParams.q %}
        {# 循环展示搜索结果 #}
    {% endarchiveList %}
    

    urlParams.q 会自动获取URL中?q=关键词关键词部分)

  • 高级自定义参数筛选: AnQiCMS最强大的筛选功能之一是支持基于内容模型自定义字段的筛选。这对于构建垂直领域网站(如房产、招聘、商品)非常有用。您可以在后台为内容模型添加诸如“户型”、“薪资范围”、“品牌”等自定义字段,并将其设置为可筛选。

    要实现这种筛选,我们需要用到 archiveFilters 标签来生成筛选条件,然后 archiveList 会自动响应这些条件。archiveFilters 标签会返回一个包含每个筛选维度及其可选值的列表,并且会根据当前URL参数自动标记已选中的筛选项。

    例如,在房产网站中,您可以根据“户型”和“区域”进行筛选:

    {# 生成筛选条件 #}
    {% archiveFilters filters with moduleId="1" allText="不限" %}
        {% for item in filters %}
        <div>
            <span>{{item.Name}}: </span>
            {% for val in item.Items %}
            <a href="{{val.Link}}" class="{% if val.IsCurrent %}active{% endif %}">{{val.Label}}</a>
            {% endfor %}
        </div>
        {% endfor %}
    {% endarchiveFilters %}
    
    {# 结合筛选条件展示文章列表,archiveList会自动识别URL中的筛选参数 #}
    {% archiveList properties with type="page" moduleId="1" %}
        {# 循环展示房产列表 #}
    {% endarchiveList %}
    

    当用户点击筛选条件时,URL会自动携带相应的参数(如 ?huxing=三室一厅&quyu=朝阳区),archiveList 会根据这些参数动态调整查询结果。

三、精准控制分页显示

对于文章数量庞大的网站,分页是必不可少的功能。AnQiCMS将文章列表数据获取和分页链接的生成解耦,提供了清晰的实现路径。

要启用分页,首先在 archiveList 标签中将 type 参数设置为 "page"

{% archiveList articles with type="page" limit="10" %}
    {# 循环展示当前页的文章 #}
{% endarchiveList %}

limit="10" 在这里表示每页显示10篇文章。

接下来,利用pagination 标签来渲染分页链接:

{% pagination pages with show="5" %}
    <a href="{{pages.FirstPage.Link}}">首页</a>
    {% if pages.PrevPage %}
    <a href="{{pages.PrevPage.Link}}">上一页</a>
    {% endif %}
    {% for item in pages.Pages %}
    <a href="{{item.Link}}" class="{% if item.IsCurrent %}active{% endif %}">{{item.Name}}</a>
    {% endfor %}
    {% if pages.NextPage %}
    <a href="{{pages.NextPage.Link}}">下一页</a>
    {% endif %}
    <a href="{{pages.LastPage.Link}}">末页</a>
{% endpagination %}

pagination 标签会生成一个 pages 对象,其中包含当前页、总页数、首页、末页、上一页、下一页以及中间页码列表等信息。show="5" 参数控制了中间页码链接的最大显示数量。通过循环 pages.Pages,您可以构建出常见的分页导航。

四、结合其他标签提升列表信息维度

为了让文章列表更加丰富和实用,我们经常需要集成其他信息。

  • 显示文章分类信息: 在文章列表中,除了文章标题,通常还需要显示其所属分类。虽然 item.CategoryId 提供了分类ID,但要获取分类名称和链接,可以使用 categoryDetail 标签

    <span>所属分类:{% categoryDetail with name="Title" id=item.CategoryId %}</span>
    
  • 格式化时间与日期: 文章的发布时间通常是时间戳格式,为了便于阅读,可以使用 stampToDate 过滤器进行格式化:

    <span>发布时间:{{stampToDate(item.CreatedTime, "2006-01-02")}}</span>
    

    其中的 “2006-01-02” 是Go语言的时间格式化标准,代表“年-月-日”。

  • 展示文章标签: 如果文章关联了标签,可以使用 tagList 标签来获取并展示:

    {% tagList tags with itemId=item.Id %}
        {% for tag in tags %}
        <a href="{{tag.Link}}">{{tag.Title}}</a>
        {% endfor %}
    {% endtagList %}
    
  • 访问自定义字段: 当内容模型定义了额外的自定义字段时,可以通过 archiveParams 标签或直接通过 `item.自定义字段名

相关文章

AnQiCMS是否支持Json-LD结构化数据输出,以及如何自定义其内容?

AnQiCMS 对 Json-LD 结构化数据的支持,以及如何自定义其内容,是许多关注网站 SEO 表现的用户经常探讨的问题。作为一款致力于提升内容管理效率和 SEO 优化的系统,AnQiCMS 在这方面提供了灵活且强大的功能。 ### AnQiCMS 对 Json-LD 结构化数据的原生支持 首先,AnQiCMS 确实支持 Json-LD 结构化数据输出。结构化数据是一种标准化的格式

2025-11-07

如何在AnQiCMS模板中调用和显示页面的TDK(标题、关键词、描述)信息?

在网站运营中,TDK(Title, Keywords, Description)信息扮演着至关重要的角色,它们直接影响着网站在搜索引擎中的可见度和点击率。作为网站对外展示的“名片”,TDK的合理设置是SEO优化的基石。AnQiCMS作为一个专注于SEO优化的内容管理系统,自然为用户提供了灵活且强大的TDK管理与调用功能。 ###

2025-11-07

AnQiCMS如何通过设置规范链接(Canonical URL)避免内容重复导致的SEO问题?

在网站运营中,内容重复是一个常见但又容易被忽视的问题,它可能悄无声息地侵蚀我们辛辛苦苦积累的SEO成果。搜索引擎在抓取和索引网站内容时,如果发现多个URL指向的是相同或高度相似的内容,就会陷入“选择困难症”,不知道哪个版本才是我们真正想要被展示在搜索结果中的“权威”页面。这种困惑不仅可能导致搜索引擎对这些重复页面降权,甚至可能影响整个网站的排名。 作为内容运营者

2025-11-07

如何在AnQiCMS后台对网站首页的Title、Keywords、Description进行配置?

在运营网站时,网站首页的Title(标题)、Keywords(关键词)和Description(描述),简称TDK,是搜索引擎了解我们网站内容的第一道门槛。它们直接影响着网站在搜索结果中的展示效果和点击率,对于网站的搜索引擎优化(SEO)至关重要。安企CMS(AnQiCMS)深知这些要素的重要性,因此在后台提供了非常直观和便捷的TDK配置功能,让您即使没有深厚的技术背景,也能轻松管理。 接下来

2025-11-07

AnQiCMS 如何实现多站点内容的统一管理和展示?

管理多个网站常常让人头疼,每个站点单独维护一套系统,不仅耗费大量时间和精力,还可能导致品牌形象不统一、内容更新滞后,以及难以集中进行数据分析和SEO优化。想象一下,如果能在一个后台轻松管理所有站点的内容,并灵活地控制它们的展示方式,那该是多么高效! AnQiCMS正是为解决这样的痛点而生。它不是简单地让您在同一台服务器上运行多个独立的CMS,而是提供了一套集中的解决方案,让您能够以统一

2025-11-07

如何利用安企CMS灵活的内容模型自定义内容显示结构?

## 解锁内容潜能:利用安企CMS灵活内容模型自定义显示结构 在当今瞬息万变的数字世界里,网站内容早已不再是简单的文章和页面。对于许多运营者来说,它可能包含了琳琅满目的产品、引人入胜的活动、专业详细的项目案例,甚至是独具特色的团队成员介绍。传统内容管理系统(CMS)往往采用固定的内容结构,让这些多样化的信息只能挤进“标题”和“正文”的框框里,导致内容展示千篇一律,用户体验大打折扣

2025-11-07

安企CMS如何支持多语言内容的切换与正确显示?

在全球化日益盛行的今天,让网站内容能够触达不同语言的用户变得至关重要。安企CMS深知这一需求,为此提供了强大而灵活的多语言支持功能,帮助我们轻松实现内容的国际化切换与正确显示。 ### 核心理念与基础配置 安企CMS在多语言处理上,有着清晰的分层设计。它区分了系统内置文本的翻译、自定义模板文本的翻译,以及实际内容的组织与展示。这让我们能够灵活地应对不同场景下的多语言需求。 首先

2025-11-07

伪静态和301重定向功能如何提升网站内容在搜索引擎中的可见度?

当我们在互联网上发布内容,最核心的愿望之一就是让这些内容被更多人看到。搜索引擎作为信息的主要入口,自然成了我们争相优化的“战场”。而在众多提升网站在搜索引擎中可见度的策略里,伪静态URL和301重定向是两个看似基础,实则影响深远的关键功能。对于安企CMS的用户来说,深入理解并善用它们,能为网站带来显著的优势。 ### 伪静态URL的魔力——让链接更“懂”搜索引擎和用户 您有没有注意到

2025-11-07