在构建和运营网站时,如何有效地组织和呈现内容是提升用户体验和内容发现效率的关键。对于使用安企CMS(AnQiCMS)的朋友来说,灵活地对文档列表进行排序是一项非常实用的功能。无论是希望访客优先看到最热门的文章,还是最新的动态,AnQiCMS都提供了简洁而强大的方式来实现。

通常,当我们想要展示一系列文档时,例如博客文章、产品介绍或新闻列表,我们会希望它们能够按照特定的逻辑顺序排列。最常见的需求便是按照文档的浏览量(热门程度)或者发布时间(最新程度)进行排序。安企CMS为此提供了专门的模板标签,让您可以轻松地在网站前端实现这些排序逻辑。

核心工具:archiveList 文档列表标签

在安企CMS的模板体系中,archiveList 标签是用于获取文档列表的核心工具。它功能强大,可以通过各种参数来筛选、限制和排序您想要展示的文档。所有的排序逻辑,都将围绕这个标签的 order 参数展开。

这个标签的基本使用形式是这样的:

{% archiveList 变量名称 with 参数="值" %}
    {# 在这里循环显示文档内容 #}
{% endarchiveList %}

其中,变量名称 可以是您自定义的一个名称,例如 archives,用于在循环中引用每一篇文档。参数 则是控制文档列表行为的关键。

排序方式一:按浏览量(Views)排序

如果您的目标是让访客一眼就能看到网站上最受欢迎、被阅读次数最多的内容,那么按照浏览量降序排列是一个非常好的选择。安企CMS的 archiveList 标签提供了 views desc 这个参数值,用于实现这一功能。desc 表示降序排列,即从高到低。

例如,要在您的网站首页或者特定分类页显示10篇浏览量最高的文章,您可以这样编写模板代码:

<div class="most-popular-articles">
    <h2>热门文章</h2>
    <ul>
        {% archiveList archives with type="list" order="views desc" limit="10" %}
            {% for item in archives %}
            <li>
                <a href="{{ item.Link }}" title="{{ item.Title }}">
                    <h3>{{ item.Title }}</h3>
                    <p>浏览量:{{ item.Views }}</p>
                </a>
            </li>
            {% endfor %}
        {% endarchiveList %}
    </ul>
</div>

在这段代码中:

  • type="list" 表示我们获取的是一个普通列表,而不是用于分页的列表。
  • order="views desc" 明确指定了按文档的浏览量(Views)进行降序排序。
  • limit="10" 则限制了只显示前10篇最热门的文章。
  • for 循环内部,item.Link 获取文档链接,item.Title 获取文档标题,item.Views 则显示文档的浏览量。

通过这样的设置,您的网站将动态地展示那些最吸引访客目光的内容。

排序方式二:按发布时间(CreatedTime)排序

对于新闻动态、最新产品发布或时效性较强的内容,我们更倾向于按照发布时间从新到旧的顺序展示,让访客能够及时了解到最新信息。在安企CMS中,文档的 Id 通常是自动递增的,因此按照 id desc 进行排序,能够很有效地实现按发布时间从新到旧的排列。

要展示最新的文档,您可以这样修改 archiveList 标签:

<div class="latest-articles">
    <h2>最新动态</h2>
    <ul>
        {% archiveList archives with type="list" order="id desc" limit="5" %}
            {% for item in archives %}
            <li>
                <a href="{{ item.Link }}" title="{{ item.Title }}">
                    <h3>{{ item.Title }}</h3>
                    <p>发布时间:{{ stampToDate(item.CreatedTime, "2006-01-02 15:04") }}</p>
                </a>
            </li>
            {% endfor %}
        {% endarchiveList %}
    </ul>
</div>

在这里:

  • order="id desc" 告诉系统按照文档的ID降序排列,由于ID通常是按文档创建顺序分配的,这相当于实现了按最新发布时间排序。
  • item.CreatedTime 获取文档的创建时间,它是一个时间戳。
  • stampToDate(item.CreatedTime, "2006-01-02 15:04") 是一个非常有用的辅助函数,它能将时间戳格式化为我们更容易阅读的日期时间字符串。"2006-01-02 15:04" 是Go语言的时间格式化标准,您可以根据需要调整来显示年-月-日、小时:分钟等信息。

结合分页功能使用

当您的文档数量非常庞大时,仅仅显示一个列表是不够的,通常还需要搭配分页功能。在 archiveList 标签中,只需要将 type 参数设置为 page,然后结合 pagination 标签即可实现。

例如,一个带有分页的最新文章列表可以这样实现:

<div class="paginated-latest-articles">
    <h2>所有文章</h2>
    <ul>
        {% archiveList archives with type="page" order="id desc" limit="10" %}
            {% for item in archives %}
            <li>
                <a href="{{ item.Link }}" title="{{ item.Title }}">
                    <h3>{{ item.Title }}</h3>
                    <p>发布时间:{{ stampToDate(item.CreatedTime, "2006-01-02") }}</p>
                </a>
            </li>
            {% endfor %}
        {% endarchiveList %}
    </ul>

    {# 分页代码 #}
    <div class="pagination-controls">
        {% pagination pages with show="5" %}
            {% if pages.PrevPage %}<a href="{{ pages.PrevPage.Link }}">上一页</a>{% endif %}
            {% for page in pages.Pages %}
                <a href="{{ page.Link }}" class="{% if page.IsCurrent %}active{% endif %}">{{ page.Name }}</a>
            {% endfor %}
            {% if pages.NextPage %}<a href="{{ pages.NextPage.Link }}">下一页</a>{% endif %}
        {% endpagination %}
    </div>
</div>

在这里,type="page" 告诉 archiveList 标签这是一个需要分页的列表,并且 limit="10" 定义了每页显示10篇文档。紧随其后的 pagination 标签则会自动生成页码链接,方便访客浏览所有页面。

总结操作步骤

要在安企CMS中按浏览量或发布时间对文档列表进行排序,您只需遵循以下步骤:

  1. 确定需要修改的模板文件:这通常是网站首页模板 (index/index.html)、分类列表页模板 ({模型table}/list.html) 或其他包含文档列表的部分。
  2. 找到 archiveList 标签:在模板文件中定位到负责显示文档列表的 {% archiveList ... %} 代码块。
  3. 调整 order 参数
    • 若要按浏览量从高到低排序,请将 order 参数设置为 order="views desc"
    • 若要按发布时间从新到旧排序,请将 order 参数设置为 order="id desc"
  4. 保存并更新缓存:保存模板文件,如果网站开启了缓存,记得在后台更新系统缓存,以便新的排序规则生效。

安企CMS的模板标签设计使得内容排序变得直观易用,通过简单的参数调整,就可以让您的网站内容以最符合访客需求的方式呈现,极大地提升了网站的实用性和用户体验。


常见问题 (FAQ)

  1. 问:除了降序(desc),我能否按升序(asc)排列文档? 答:当然可以。在 order 参数中,除了 desc(降序),您也可以使用 asc(升序)。例如,order="views asc" 将会按浏览量从低到高排序,而 order="id asc" 则会按最早发布的文档进行排序。

  2. 问:order="id desc"order="CreatedTime desc" 有什么区别,我应该选择哪个来按发布时间排序? 答:在安企CMS中,order 参数直接支持 id desc 来根据文档ID进行降序排序。由于文档ID通常是系统创建时自动分配的唯一且递增的标识,因此 id desc 能够非常有效地实现按发布时间从新到旧的排序。而 CreatedTime 字段本身虽然存储了发布时间