如何在模板中获取并显示文章列表,并控制每页显示的文章数量?

📅 👁️ 72

在使用安企CMS(AnQiCMS)管理网站内容时,灵活地在前端页面展示文章列表是运营人员的日常需求。无论是首页的最新动态、分类页下的文章集合,还是带有分页功能的内容聚合页,AnQiCMS都提供了强大且易用的模板标签来帮助我们实现这些功能。今天,我们就来深入了解如何在AnQiCMS模板中高效获取并显示文章列表,并精确控制每页显示的文章数量。

核心:archiveList 标签,内容展示的“调度员”

在AnQiCMS模板中,展示文章列表的核心工具是archiveList标签。这个标签就像一个智能的内容调度员,能够根据我们设定的各种条件,从海量文章中筛选出目标内容,并以我们期望的方式呈现。

我们先从最基础的用法开始。如果你只是想在页面上固定显示一定数量的文章,例如最新的5篇文章,你可以这样使用archiveList标签:

{% archiveList archives with type="list" limit="5" %}
    {% for item in archives %}
    <li>
        <a href="{{item.Link}}">
            <h5>{{item.Title}}</h5>
            <p>{{item.Description}}</p>
            <div>
                <span>发布日期:{{stampToDate(item.CreatedTime, "2006-01-02")}}</span>
                <span>阅读量:{{item.Views}}</span>
            </div>
        </a>
    </li>
    {% else %}
    <li>暂时没有相关文章。</li>
    {% endfor %}
{% endarchiveList %}

在这段代码中,archiveList标签通过type="list"指定了列表类型为固定列表,而limit="5"则明确告诉系统只获取最新的5篇文章。archives是我们给获取到的文章列表起的变量名,在随后的for循环中,我们可以通过item.Titleitem.Link等方式访问每篇文章的标题、链接等信息。stampToDate标签则用于将文章的时间戳格式化为我们可读的日期格式。

进阶:type="page"pagination 标签,实现分页文章列表

当你的内容量较大,需要用户通过点击页码来浏览更多文章时,archiveList标签与pagination标签的组合就显得尤为重要。

首先,archiveList标签需要将type参数设置为"page"。这会告诉系统,我们期望获取的文章列表是用于分页显示的,系统会自动处理当前页码和总文章数等信息。

接着,我们需要引入pagination标签来生成页码导航。pagination标签会根据archiveList处理后的分页数据,自动生成“首页”、“上一页”、“下一页”以及具体的页码链接。

让我们通过一个完整的例子来理解它们如何协同工作:

{# 假设这是一个文章列表页,通过URL参数可传递分类ID或搜索关键词 #}

<div class="article-list-container">
    {% archiveList archives with type="page" limit="10" moduleId="1" %} {# 获取文章模型下每页10篇文章,准备分页 #}
        {% for item in archives %}
        <article class="article-item">
            <a href="{{item.Link}}">
                {% if item.Thumb %}
                <div class="article-thumb">
                    <img src="{{item.Thumb}}" alt="{{item.Title}}">
                </div>
                {% endif %}
                <div class="article-info">
                    <h3>{{item.Title}}</h3>
                    <p class="article-description">{{item.Description}}</p>
                    <div class="article-meta">
                        <span class="category-name">分类:{% categoryDetail with name="Title" id=item.CategoryId %}</span>
                        <span class="publish-date">发布于:{{stampToDate(item.CreatedTime, "2006-01-02")}}</span>
                        <span class="views">浏览:{{item.Views}}</span>
                    </div>
                </div>
            </a>
        </article>
        {% else %}
        <p class="no-content">当前分类下没有文章。</p>
        {% endfor %}
    {% endarchiveList %}
</div>

{# 分页导航区域 #}
<div class="pagination-nav">
    {% pagination pages with show="5" %} {# 显示最多5个页码链接 #}
        {% if pages.TotalPages > 1 %} {# 只有当总页数大于1时才显示分页 #}
        <ul>
            {% if pages.FirstPage %}
            <li class="{% if pages.FirstPage.IsCurrent %}active{% endif %}"><a href="{{pages.FirstPage.Link}}">{{pages.FirstPage.Name}}</a></li>
            {% endif %}

            {% if pages.PrevPage %}
            <li><a href="{{pages.PrevPage.Link}}">{{pages.PrevPage.Name}}</a></li>
            {% endif %}

            {% for pageItem in pages.Pages %}
            <li class="{% if pageItem.IsCurrent %}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 %}

            {% if pages.LastPage %}
            <li class="{% if pages.LastPage.IsCurrent %}active{% endif %}"><a href="{{pages.LastPage.Link}}">{{pages.LastPage.Name}}</a></li>
            {% endif %}
        </ul>
        <p>总共 {{pages.TotalItems}} 篇文章,当前第 {{pages.CurrentPage}} / {{pages.TotalPages}} 页。</p>
        {% endif %}
    {% endpagination %}
</div>

在这个例子中:

  • archiveList 标签的 limit="10" 定义了每页显示10篇文章。
  • moduleId="1" 确保我们只获取ID为1(通常是文章模型)的内容。
  • pagination pages with show="5" 指示系统生成页码导航,pages是我们为分页数据定义的变量名,show="5"则表示在中间部分最多显示5个页码链接,超出部分会自动省略。
  • pagination标签内部,我们利用pages.FirstPagepages.PrevPagepages.Pages(这是一个包含中间页码的数组)、pages.NextPagepages.LastPage等属性,灵活地构建出完整的页码导航结构。pageItem.IsCurrent可以帮助我们高亮当前所在的页码。

通过这种组合,我们可以非常方便地创建出功能完善、用户体验良好的文章分页列表。

丰富文章列表:archiveList 标签的常用参数

除了控制显示数量和分页,archiveList标签还支持多种参数来精细化筛选和排序文章,让你的内容展示更加多样和精准:

  • moduleId 当你的AnQiCMS网站拥有文章、产品等多种内容模型时,通过moduleId="1"(文章模型ID)或moduleId="2"(产品模型ID)来指定获取特定模型下的文章列表。
  • categoryId 想要只展示特定分类下的文章,categoryId="10"(分类ID为10)就能派上用场。你也可以用逗号分隔,同时指定多个分类ID,例如categoryId="1,3,5"。如果将categoryId设置为"0",则表示不自动读取当前页面分类ID,这在需要获取全站热门文章时很有用。
  • order 内容的排序方式也能灵活控制。order="id desc"表示按最新发布排序(ID降序),order="views desc"表示按浏览量从高到低排序,而order="sort desc"则根据后台手动设置的排序值进行排序。
  • flag 配合后台文章的推荐属性(如头条[h]、推荐[c]),你可以通过flag="h"来获取具有头条属性的文章列表。
  • q 在搜索结果页中,q参数

相关文章

AnQiCMS如何实现多语言内容的切换与显示,提升国际化用户体验?

在当今全球化的数字世界中,一个网站如果能够以多种语言呈现其内容,无疑能极大拓展其用户群体,并显著提升用户体验。AnQiCMS 作为一款功能强大的内容管理系统,充分考虑了国际化运营的需求,提供了一套灵活且高效的机制来实现多语言内容的切换与显示。 ### 为什么多语言内容如此重要? 想象一下,一位来自日本的用户访问您的网站,如果他们能够用母语阅读产品介绍或服务说明,其信任感和参与度会立刻提升

2025-11-08

如何利用AnQiCMS的灵活内容模型,为不同类型内容(如文章、产品)定制独特的显示字段?

AnQiCMS,这个以Go语言驱动的内容管理系统,在内容管理方面做得非常出色,特别是它那灵活的内容模型功能。作为网站运营者,我们常常需要发布各种类型的内容,比如详细的产品介绍、专业的技术文章、生动的案例分享等等。每种内容都有其独特的展示需求和信息结构。传统的内容管理系统可能需要繁琐的二次开发才能满足这些差异,但AnQiCMS的灵活内容模型,正是为解决这一痛点而生,让我们能够轻松定制

2025-11-08

如何在模板中正确调用并显示文章的标题和内容?

在使用安企CMS(AnQiCMS)构建和管理网站时,文章的标题和内容是核心元素,它们的正确调用和显示直接关系到网站的视觉呈现、用户体验以及搜索引擎优化。理解如何在AnQiCMS模板中高效、准确地处理这些信息,是进行网站内容运营和模板定制的关键。 AnQiCMS的模板系统采用了类似Django模板引擎的语法,这为内容展示提供了极大的灵活性和可定制性。在模板中,您会发现变量通常使用双花括号

2025-11-08

AnQiCMS支持哪些模板类型,如何选择最适合网站的显示模式(自适应、代码适配、PC+手机端)?

AnQiCMS作为一个高效且可定制的内容管理系统,在网站内容展示方面提供了多种灵活的模式,以满足不同用户的多样化需求。理解这些模板类型及其适用场景,对于构建一个用户体验良好、易于管理且有利于搜索引擎优化的网站至关重要。 AnQiCMS 为用户提供了三种主要的模板类型,以满足不同网站的显示需求。它们分别是自适应模板、代码适配模板以及PC+手机端独立站点模板。每种模式都有其独特的特点和适用场景

2025-11-08

如何自定义文章详情页的显示布局,包括图片、描述和自定义参数

在安企CMS中,文章详情页的显示布局拥有极高的灵活性,无论是展示文章的核心内容、精美图片,还是自定义的业务参数,系统都提供了直观且强大的方式来帮助您实现个性化的需求。这得益于AnQiCMS基于Django类似语法的模板引擎,它让内容与设计分离,使得即使是不具备深厚编程背景的用户也能通过简单的标签进行布局调整。 ### 理解文章详情页的构成 在AnQiCMS中,文章(或产品

2025-11-08

如何在AnQiCMS模板中循环遍历并输出文章列表?

AnQiCMS 为网站内容管理提供了强大而灵活的模板系统,其中,循环遍历并输出文章列表是构建动态网站不可或缺的核心功能。无论您是需要展示最新文章、分类列表,还是实现高级筛选和分页,AnQiCMS 的模板标签都能帮助您高效完成。 ### 核心功能:理解 `archiveList` 标签 在 AnQiCMS 的模板中,获取并展示文章列表的关键在于使用 `archiveList` 标签

2025-11-08

如何获取当前循环中的文章项索引或剩余项数量?

在使用安企CMS进行网站内容展示时,我们常常需要对列表中的每一个内容项进行精细化控制。这可能包括为文章添加序号、突出显示列表中的第一个或最后一个项目,或者根据项目在列表中的位置应用不同的样式。安企CMS的模板系统采用了类似Django模板引擎的语法,其中处理列表循环的关键是`for`循环标签。 在`for`循环内部,系统提供了一个非常实用的特殊变量——`forloop`

2025-11-08

AnQiCMS的`for`循环如何实现列表的倒序或自定义排序输出?

网站内容列表的展示顺序对于用户体验和信息传达至关重要。无论是新闻动态、产品展示还是文章归档,灵活控制列表的输出顺序都是网站运营中的常见需求。AnQiCMS 提供了强大且易于使用的模板引擎,让我们可以轻松驾驭列表的排列方式,包括倒序和按特定规则排序。 ### AnQiCMS 模板引擎基础 AnQiCMS 的模板系统借鉴了 Django 模板引擎的语法风格,通过简洁的标签和变量声明

2025-11-08