当您管理网站内容时,如何有效地组织和展示文档列表,使其既符合用户习惯又能突出重点,是一个非常关键的环节。安企CMS(AnQiCMS)提供了灵活而强大的功能,让您能够轻松实现文档内容的多种排序和筛选,无论是按最新发布、最受欢迎还是其他自定义方式。

在 AnqiCMS 中,文档列表的灵活展示主要通过强大的 archiveList 模板标签来实现。这个标签是您获取和控制内容列表的核心工具,通过为其配置不同的参数,您就能定义内容的排序规则、筛选条件以及显示数量等。

实现按最新内容排序

当您希望用户首先看到网站上最新发布的内容时,可以使用 archiveList 标签的 order 参数并设置为 id desc。这里的 id 指的是文档的唯一标识符,通常与内容的发布时间呈正相关,desc 表示降序排列,即 ID 值越大(通常意味着发布越晚)的内容排在越前面。

例如,要在首页或其他页面显示最新的 10 篇文章,您可以这样编写模板代码:

{% archiveList archives with type="list" limit="10" order="id desc" %}
    {% for item in archives %}
    <div class="article-item">
        <a href="{{ item.Link }}">{{ item.Title }}</a>
        <span>发布时间: {{ stampToDate(item.CreatedTime, "2006-01-02") }}</span>
    </div>
    {% endfor %}
{% endarchiveList %}

实现按最热内容排序

要突出网站上最受用户欢迎或阅读量最高的内容,您可以通过 order="views desc" 参数来实现。views 代表文档的浏览量,设置为 desc 后,浏览量越高的文档将优先展示。这对于发现热门话题或推广重要内容非常有效。

例如,显示最受欢迎的 5 篇文章:

{% archiveList archives with type="list" limit="5" order="views desc" %}
    {% for item in archives %}
    <div class="hot-article-item">
        <a href="{{ item.Link }}">{{ item.Title }}</a>
        <span>浏览量: {{ item.Views }}</span>
    </div>
    {% endfor %}
{% endarchiveList %}

实现自定义排序

除了系统内置的最新和最热排序,AnqiCMS 还允许您通过后台手动设置文档的显示顺序。这通常通过 order="sort desc" 来实现。当您在后台管理文档时,可以为每个文档设置一个“显示顺序”值,系统会根据这个值进行排序。这对于需要人工干预来突出特定内容的场景非常有用,例如推荐文章或专题。

在模板中调用时,您可以这样使用:

{% archiveList archives with type="list" limit="8" order="sort desc" %}
    {% for item in archives %}
    <div class="featured-article-item">
        <a href="{{ item.Link }}">{{ item.Title }}</a>
    </div>
    {% endfor %}
{% endarchiveList %}

结合多种条件进行筛选与排序

AnqiCMS 的强大之处在于您可以将这些排序规则与多种筛选条件结合起来,创建出高度定制化的内容列表。archiveList 标签支持多种筛选参数,例如:

  • categoryId: 根据特定分类的 ID 来筛选内容。
  • flag: 根据文档的推荐属性(如头条、推荐、幻灯等)来筛选。
  • q: 根据搜索关键词来筛选。
  • type="page": 如果您需要分页显示内容,则必须设置此参数,并结合 pagination 标签使用。

例如,在一个特定分类(ID 为 10)下,显示最新的推荐文章,并进行分页展示:

{% archiveList archives with type="page" categoryId="10" flag="c" order="id desc" limit="10" %}
    {% for item in archives %}
    <div class="category-recommended-item">
        <h3><a href="{{ item.Link }}">{{ item.Title }}</a></h3>
        <p>{{ item.Description|truncatechars:100 }}</p>
    </div>
    {% empty %}
    <p>该分类下暂无推荐文章。</p>
    {% endfor %}
{% endarchiveList %}

<div class="pagination-container">
    {% pagination pages with show="5" %}
        {# 这里可以放置分页链接的代码,例如:#}
        {% 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 %}
    {% endpagination %}
</div>

除了 archiveList,如果您需要更复杂的、基于内容模型自定义字段的筛选功能,archiveFilters 标签也能派上用场。它能帮助您生成筛选条件组,例如在房地产网站中按“户型”或“面积”筛选,然后在此基础上再应用排序。

总结

通过灵活运用 archiveList 标签及其 order 参数,您可以根据网站运营需求,轻松调整内容列表的展示方式。无论是追求时效性的“最新”,还是强调用户关注度的“最热”,亦或是精细化运营的“自定义排序”,AnqiCMS 都提供了直观且易于操作的解决方案。这些功能的结合,将极大地提升网站内容的组织效率和用户访问体验。


常见问题 (FAQ)

1. 我是否可以在同一个页面上显示不同排序规则的文档列表? 是的,完全可以。您只需要在模板文件中使用多个 archiveList 标签,并为每个标签配置不同的 order 参数和 limit 参数即可。例如,一个列表显示最新文章,另一个列表显示最热文章。

2. 除了最新和最热,AnqiCMS 还有哪些内置的排序方式? AnqiCMS 内置支持按照文档 ID 降序(id desc,通常代表最新发布),浏览量降序(views desc,代表最热),以及后台自定义排序(sort desc)。自定义排序的值需要在 AnqiCMS 后台编辑文档时手动设定。

3. 我修改了模板中的排序规则,为什么前台页面没有立即生效? 这通常是由于网站缓存导致的。在 AnqiCMS 后台,您可以找到“更新缓存”功能,点击清理缓存后,前台页面就会显示最新的排序效果。此外,浏览器缓存也可能影响显示,建议在清理网站缓存后,也尝试清空浏览器缓存或使用无痕模式访问。