如何在模板中调用并显示文档列表,并进行排序和筛选?

在安企CMS中管理和展示网站内容,尤其是文档列表,是日常运营中非常普遍的需求。安企CMS提供了强大且灵活的模板标签,让我们能够轻松地在网站前台调用、显示这些内容,并根据需要进行排序和筛选。本文将深入探讨如何利用安企CMS的模板功能,实现这些目标,让您的网站内容展示更具吸引力。

核心功能:archiveList 标签——展示文档内容的基础

要显示文档列表,我们主要会用到安企CMS的archiveList标签。这个标签是调用文档数据的核心,它能够根据各种条件检索出您想要展示的文档。

通常,您会在模板文件(例如列表页或首页)中这样使用它:

{% archiveList archives with type="list" limit="10" %}
    {% for item in archives %}
    <li>
        <a href="{{ item.Link }}">
            <h3>{{ item.Title }}</h3>
            <p>{{ item.Description|truncatechars:100 }}</p>
            <div>
                <span>发布日期: {{ stampToDate(item.CreatedTime, "2006-01-02") }}</span>
                <span>浏览量: {{ item.Views }}</span>
            </div>
        </a>
        {% if item.Thumb %}
            <img src="{{ item.Thumb }}" alt="{{ item.Title }}">
        {% endif %}
    </li>
    {% empty %}
    <li>暂时没有文档内容。</li>
    {% endfor %}
{% endarchiveList %}

在这段代码中,archiveList 标签将检索到的文档集合赋值给了 archives 这个变量。接着,我们使用 {% for item in archives %} 循环遍历每一个文档,并通过 item.Titleitem.Linkitem.Description 等字段来显示文档的标题、链接和简介。stampToDate 是一个非常实用的函数,用于将时间戳格式化为我们可读的日期。如果没有任何文档,{% empty %} 块就会显示预设的提示信息。

archiveList 标签支持一系列参数,让您能够精确控制要显示哪些文档以及如何显示:

  • moduleId:指定内容模型的ID(例如,文章通常是1,产品可能是2),确保您调用的是正确类型的内容。
  • categoryId:根据分类ID来筛选文档,您可以指定单个ID,也可以用逗号分隔多个ID,甚至可以使用 child=truechild=false 来决定是否包含子分类的文档。
  • limit:控制显示文档的数量。例如 limit="10" 会显示最近的10条文档。它还支持offset模式,如limit="2,10"表示从第2条开始获取10条数据。
  • type:这是非常关键的参数,它定义了列表的类型。
    • type="list" 用于简单列表展示,受limit参数限制。
    • type="page" 用于需要分页的列表,必须配合 pagination 标签使用。
    • type="related" 用于显示相关文档,通常在文档详情页使用。
  • order:用于指定文档的排序规则。

灵活掌控:文档列表的排序

安企CMS让文档的排序变得轻而易举,通过archiveList标签的order参数,您可以根据多种维度对文档进行排列。

  • 按最新发布排序:使用 order="id desc" 会将最新的文档排在前面。
  • 按浏览量排序order="views desc" 可以让浏览量最高的文档优先展示,适用于热门内容推荐。
  • 按后台自定义排序:如果您在后台对文档进行了手动排序,order="sort desc" 会按照您自定义的顺序来显示。

例如,要显示某个分类下浏览量最高的前五篇文章,您可以这样编写:

{% archiveList hotArticles with categoryId="1" order="views desc" limit="5" %}
    <h4>热门文章</h4>
    <ul>
    {% for item in hotArticles %}
        <li><a href="{{ item.Link }}">{{ item.Title }} ({{ item.Views }}次浏览)</a></li>
    {% endfor %}
    </ul>
{% endarchiveList %}

精准定位:文档列表的筛选

筛选是内容运营中不可或缺的一环,安企CMS提供了多种筛选方式,帮助您将最贴切的内容呈现给用户。

  1. 按分类筛选:这是最基本的筛选方式。通过 categoryId="1" 即可显示ID为1的分类下的所有文档。如果您想包含子分类,可以额外添加 child=true

  2. 按推荐属性筛选:安企CMS允许您为文档设置多种推荐属性,例如“头条”、“推荐”、“幻灯”等。使用 flag 参数可以调用这些特定属性的文档,如 flag="h" 调用头条文章,flag="c" 调用推荐文章。

  3. 关键词搜索筛选:当您需要在列表页中加入搜索功能时,q 参数非常有用。它会自动读取URL中的q查询参数作为搜索关键词,匹配文档标题。您可以在搜索页面的archiveList标签中省略q参数,系统会自动捕获URL中的搜索词。

  4. 自定义参数筛选:archiveFilters 标签 当您的文档模型包含自定义字段(例如“颜色”、“尺寸”、“户型”等),并且希望用户能够通过这些自定义字段进行筛选时,archiveFilters 标签就显得尤为强大。

    它会生成一个可供选择的筛选条件列表,每个条件都带有相应的链接,点击后即可触发筛选。

    <div>
        <h5>筛选条件</h5>
        {% archiveFilters filters with moduleId="1" allText="不限" %}
            {% for item in filters %}
            <p>{{ item.Name }}:</p>
            <ul>
                {% for val in item.Items %}
                <li class="{% if val.IsCurrent %}active{% endif %}">
                    <a href="{{ val.Link }}">{{ val.Label }}</a>
                </li>
                {% endfor %}
            </ul>
            {% endfor %}
        {% endarchiveFilters %}
    </div>
    

    这里,filters 变量包含了所有可筛选的自定义参数及其选项。item.Name 是参数名称(如“户型”),item.Items 则是该参数下的所有可选值(如“一居室”、“两居室”),val.Link 提供了点击后进行筛选的URL,val.IsCurrent 则判断当前选项是否被选中。

流畅体验:实现文档列表的分页功能

对于内容量大的网站,分页是必不可少的功能。安企CMS的分页实现非常简洁,您只需要配合archiveListtype="page"参数和pagination标签即可。

  1. 设置 archiveList 为分页模式:确保在 archiveList 标签中设置 type="page",这样它才能响应分页请求并返回当前页的数据。
  2. **使用 pagination