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

AnQiCMS 模板引擎基础

AnQiCMS 的模板系统借鉴了 Django 模板引擎的语法风格,通过简洁的标签和变量声明,使得内容展示逻辑清晰易懂。处理列表数据时,for 循环标签是我们的核心工具,它允许我们遍历数组或切片等数据集合。

基本的 for 循环结构如下:

{% for item in archives %}
    {# 在这里处理每个列表项 item #}
    <p>{{ item.Title }}</p>
{% empty %}
    {# 如果列表为空,会显示这里的内容 #}
    <p>暂时没有内容可供显示。</p>
{% endfor %}

archives 通常是一个从后端获取的数据集合,item 则是循环中当前处理的每一个数据项。当 archives 集合为空时,{% empty %}{% endfor %} 之间的内容将被输出。

实现列表倒序输出

AnQiCMS 的 for 循环内置了一个非常便捷的 reversed 关键字,可以直接将数据集合以相反的顺序进行遍历输出。这对于需要展示最新内容在前的场景(例如时间倒序)非常有用,而无需在数据源层面进行额外处理。

只需在 for 循环的变量名后加上 reversed 即可:

{% for item in archives reversed %}
    <div class="list-item">
        <h3>{{ item.Title }}</h3>
        <p>发布时间:{{ stampToDate(item.CreatedTime, "2006-01-02") }}</p>
    </div>
{% endfor %}

上述代码会把 archives 列表中的数据从最后一个元素开始,逆序输出到页面上。

实现自定义排序输出:策略与实践

当我们需要更精细地控制列表排序时,例如按照浏览量、ID 或其他自定义字段进行排序,AnQiCMS 提供了两种主要策略。

策略一:利用 for 循环的 sorted 属性 (适用于简单场景)

for 循环同样提供了一个 sorted 关键字,它可以尝试对数据集合进行默认的升序排序。虽然文档说明是“按 int 排序数组”,但在实际应用中,如果集合中的对象包含可比较的默认字段(如 ID),它可能会按照这些字段进行排序。但请注意,这种排序是在模板层进行的,如果数据量较大或需要基于特定字段的复杂排序,通常推荐在数据获取阶段就完成排序。

{% for item in archives sorted %}
    {# 这里的 item 会尝试按照某种默认规则升序排列 #}
    <p>{{ item.Title }} - ID: {{ item.Id }}</p>
{% endfor %}

策略二:结合 archiveList 标签的 order 参数 (更强大、推荐的方式)

对于内容列表(如文章、产品),最强大和灵活的排序方式是在数据源获取阶段就指定排序规则。archiveList 标签提供了 order 参数,允许我们根据多个字段和升降序进行组合