AnQiCMS如何获取文章或产品的列表并支持分页显示?

📅 👁️ 71

在内容管理系统中,如何高效地展示文章或产品列表,并为用户提供流畅的分页体验,是网站运营者普遍关心的问题。AnQiCMS作为一个基于Go语言开发的系统,通过其灵活强大的模板标签系统,让这一切变得直观且高效。接下来,我们将探讨如何利用AnQiCMS的内置功能,轻松实现文章或产品的列表展示与分页功能。

开启内容列表的旅程:archiveList标签

AnQiCMS为我们提供了功能强大的archiveList标签,它是获取网站文章、产品以及其他自定义内容模型列表的核心。无论你想展示最新的博客文章、热门的产品、或是特定分类下的内容,archiveList都能轻松应对。

在使用archiveList标签时,有几个关键参数需要我们留意:

  • moduleId:区分内容类型 AnQiCMS支持创建多种内容模型,例如文章模型和产品模型。当你调用列表时,通过moduleId参数来指定你想要获取哪种类型的内容。通常情况下,文章模型的moduleId"1",产品模型是"2",自定义模型则会有对应的ID。
  • categoryId:精准定位分类 如果你只想展示某个特定分类下的内容,可以使用categoryId参数。例如,categoryId="10"会只列出ID为10的分类下的内容。它甚至支持传入多个分类ID,用逗号隔开,比如categoryId="10,12,15"。如果不指定,系统会尝试读取当前页面的分类ID来展示。
  • limit:控制每页数量 这个参数用于控制每页显示多少条内容。比如,limit="10"意味着每页最多显示10条内容。
  • order:定义排序规则 你可以根据自己的需求,定义内容的排序方式。常用的有按发布时间倒序(order="id desc")、按浏览量倒序(order="views desc")、或按后台自定义排序(order="sort desc")等。
  • type="page":分页功能的关键 这是实现分页功能的关键参数。当你将type参数设置为"page"时,AnQiCMS会告诉系统为这个列表准备好分页所需的所有数据,为后续的分页导航做好铺垫。如果只希望获取固定数量的列表而不分页,可以设置为"list"

一个简单的文章列表调用可能像这样:

{# 假设我们想获取文章模型(moduleId="1")下最新发布的10篇文章 #}
<div>
{% archiveList archives with moduleId="1" order="id desc" limit="10" %}
    {% for item in archives %}
    <article>
        <h3><a href="{{item.Link}}">{{item.Title}}</a></h3>
        <p>{{item.Description}}</p>
        <footer>
            <span>发布日期:{{stampToDate(item.CreatedTime, "2006-01-02")}}</span>
            <span>浏览量:{{item.Views}}</span>
        </footer>
    </article>
    {% empty %}
    <p>暂时没有内容可供展示。</p>
    {% endfor %}
{% endarchiveList %}
</div>

在这个例子中,archives是我们定义的变量名,它会包含所有符合条件的内容项。for循环会遍历这些内容,并使用item.Titleitem.Link等字段来展示具体信息。stampToDate是一个非常实用的标签,能帮助我们将时间戳格式化为我们想要的日期样式。

赋予列表生命:pagination标签实现分页

一旦archiveList标签通过type="page"参数准备好了分页数据,pagination标签就能完美接力,为我们的内容列表创建出用户友好的分页导航。

pagination标签会接收一个包含所有分页信息的对象,我们可以利用它来构建“首页”、“上一页”、“下一页”、“末页”以及中间的页码链接。

  • show:控制页码数量 这个参数决定了分页导航中可见的页码数量。例如,show="5"会显示当前页码附近最多5个页码链接,让分页条看起来更简洁。

一个完整的、包含分页功能的内容列表通常会结合archiveListpagination标签来使用:

{# 假设我们正在文章列表页,希望分页显示文章,每页10条 #}
<div>
{% archiveList articles with moduleId="1" type="page" order="id desc" limit="10" %}
    {# 文章列表部分 #}
    {% for item in articles %}
    <article>
        <h3><a href="{{item.Link}}">{{item.Title}}</a></h3>
        <p>{{item.Description}}</p>
        <footer>
            <span>分类:{% categoryDetail with name="Title" id=item.CategoryId %}</span>
            <span>发布日期:{{stampToDate(item.CreatedTime, "2006-01-02")}}</span>
            <span>浏览量:{{item.Views}}</span>
        </footer>
    </article>
    {% empty %}
    <p>暂时没有内容可供展示。</p>
    {% endfor %}

    {# 分页导航部分 #}
    <div class="pagination-nav">
        {% pagination pages with show="5" %}
            {# 首页链接 #}
            <a class="{% if pages.FirstPage.IsCurrent %}active{% endif %}" href="{{pages.FirstPage.Link}}">{{pages.FirstPage.Name}}</a>
            {# 上一页链接 #}
            {% if pages.PrevPage %}
            <a href="{{pages.PrevPage.Link}}">{{pages.PrevPage.Name}}</a>
            {% endif %}
            {# 中间页码链接 #}
            {% for item in pages.Pages %}
            <a class="{% if item.IsCurrent %}active{% endif %}" href="{{item.Link}}">{{item.Name}}</a>
            {% endfor %}
            {# 下一页链接 #}
            {% if pages.NextPage %}
            <a href="{{pages.NextPage.Link}}">{{pages.NextPage.Name}}</a>
            {% endif %}
            {# 末页链接 #}
            <a class="{% if pages.LastPage.IsCurrent %}active{% endif %}" href="{{pages.LastPage.Link}}">{{pages.LastPage.Name}}</a>
            <span class="page-info">当前第 {{pages.CurrentPage}} / {{pages.TotalPages}} 页,共 {{pages.TotalItems}} 条</span>
        {% endpagination %}
    </div>
{% endarchiveList %}
</div>

这里,pages是一个包含所有分页信息的对象,它提供了FirstPage(首页)、PrevPage(上一页)、Pages(中间页码数组)、NextPage(下一页)和LastPage(末页)等实用属性。每个属性又包含Link(链接地址)和IsCurrent(是否当前页)等子属性,让我们能灵活地构建分页导航的样式和逻辑。

更精准的列表控制:筛选与搜索

AnQiCMS还允许我们对列表进行更细致的筛选和搜索。

  • q:集成搜索功能archiveList中使用q参数可以实现搜索功能。例如,q="AnQiCMS"会只显示标题中包含”AnQiCMS”的文章。如果你想让用户通过搜索框提交关键词,通常会结合一个HTML表单,并将搜索关键词作为URL的查询参数传递,AnQiCMS会自动识别并应用。
    
    <form method="get" action="/search"> {# 假设搜索结果页面的URL是/search #}
        <input type="text" name="q" placeholder="请输入搜索关键词" value="{{urlParams.q}}">
        <button type="submit">搜索</button>
    </form>
    
    这里,urlParams.q可以帮助我们保留用户上次输入的搜索词。
  • flag:按推荐属性筛选 在后台编辑文章或产品时,我们可以设置“头条”、“推荐”、“幻灯”等属性(Flag)。通过flag参数,可以轻松筛选出这些特殊内容。例如,flag="c"将显示所有被标记为“推荐”的内容。
  • excludeCategoryId:排除特定分类 如果想在某个分类列表页中排除其子分类或特定分类的内容,可以使用excludeCategoryId
  • 自定义模型字段筛选 对于那些在后台内容模型中自定义的字段,如果它们被设置为可筛选,也可以通过在URL中添加查询参数的方式进行筛选,例如?color=red。这些通常可以结合archiveFilters标签在前端生成动态筛选条件。

实用小贴士

  • 模板语法

相关文章

如何在AnQiCMS中获取并显示特定单页面的内容和标题?

在AnQiCMS中,单页面是网站结构中非常实用的一部分,它们通常用于展示“关于我们”、“联系方式”等静态内容。作为内容运营者,您可能会经常需要在网站的不同位置获取并展示这些特定单页面的内容和标题。AnQiCMS提供了直观且强大的模板标签,让这个过程变得十分简单。 ### 理解AnQiCMS中的单页面 AnQiCMS的设计理念之一就是内容的高度可定制性。单页面在后台的“页面资源”模块中进行管理

2025-11-08

AnQiCMS模板如何展示所有单页面的列表和链接?

在AnQiCMS中,想要在网站模板里展示所有单页面的列表和链接,其实是一个非常常见的需求,比如您可能想在网站底部放置一个“网站地图”或者“快速链接”区域,又或者需要在侧边栏列出所有的“服务项目”单页。AnQiCMS提供了一个简单而强大的模板标签,让您能够轻松实现这一点。 ### 理解单页面及其作用 在AnQiCMS中,单页面(Page)通常用于发布那些内容相对固定

2025-11-08

如何在AnQiCMS中显示当前分类的详细信息和描述?

在运营安企CMS(AnQiCMS)网站时,我们经常需要在分类页面上动态展示当前分类的详细信息和描述,比如分类的标题、简介、大图,甚至是自定义的字段。这不仅能帮助用户更好地理解当前页面的主题,也能有效提升页面的SEO表现。安企CMS为此提供了非常灵活且直观的模板标签,让这项工作变得轻松简单。 ### 认识 `categoryDetail` 标签

2025-11-08

AnQiCMS如何获取指定内容模型的分类列表并显示?

在AnQiCMS中,灵活地获取并展示指定内容模型的分类列表,是构建清晰网站结构和良好用户体验的关键。无论是产品展示、文章归档还是服务介绍,分类列表都扮演着重要的导航角色。AnQiCMS强大的模板标签系统,让这一过程变得直观且高效。 ### 核心标签:`categoryList`的妙用 在AnQiCMS的模板设计中,我们主要依靠`categoryList`这个强大的标签来获取分类数据

2025-11-08

如何在AnQiCMS中显示指定文章或产品的详细内容?

安企CMS(AnQiCMS)作为一个高效灵活的内容管理系统,提供了直观的方式来管理和展示各类内容。当您希望在网站上呈现某一篇特定的文章、产品详情,或者任何通过内容模型创建的独立内容页面时,核心在于利用其强大的模板标签功能。 AnQiCMS将网站上的文章、产品等可独立展示的内容统称为“文档”(archive)。这种统一的设计使得管理和调用这些内容的详细信息变得非常一致和便捷

2025-11-08

AnQiCMS模板如何显示当前文章的上一篇和下一篇文章链接?

在内容运营中,为每篇文章提供导航至上一篇和下一篇的功能,不仅能显著提升用户的阅读体验,还能有效增加网站的内部链接,对搜索引擎优化(SEO)大有裨益。安企CMS以其灵活的模板系统,让这一功能的实现变得直观且高效。通过简短的模板标签,您可以轻松地在文章详情页集成这一实用的导航机制。 ### 核心功能解析:上一篇与下一篇文档标签 安企CMS内置了专门用于获取当前文章上一篇和下一篇文章的模板标签

2025-11-08

如何在AnQiCMS文章详情页显示相关文章推荐?

在网站运营中,文章详情页的相关文章推荐功能,不仅能有效提升用户在站内的浏览深度,降低跳出率,更能通过引导用户发现更多有价值的内容,间接提升网站的整体SEO表现。AnQiCMS作为一款注重效率和可扩展性的内容管理系统,提供了灵活的模板标签,让实现这一功能变得直观便捷。 接下来,我们就一起探讨如何在AnQiCMS的文章详情页中,优雅地实现相关文章推荐。 ###

2025-11-08

AnQiCMS如何动态显示文章或产品的自定义参数字段?

在构建和运营网站时,我们常常需要展示除了标题和正文之外的更多信息,例如产品的型号、颜色、库存,或是文章的作者、来源、发布平台等。AnQiCMS深知这种个性化内容展示的重要性,因此提供了高度灵活的自定义参数字段功能,让网站内容管理和前端展示变得既强大又便捷。接下来,我们就一起深入了解如何在AnQiCMS中,充分利用这一功能,让你的网站内容动态起来。 ### 第一步

2025-11-08