在安企CMS中,灵活地展示网站内容是提升用户体验和满足运营需求的关键。无论是根据文章所属的分类,还是内容的推荐属性,系统都提供了强大且易于使用的模板标签,让您能够轻松地定制文档列表的显示方式。

核心利器:archiveList 文档列表标签

在安企CMS中,用来控制文档列表展示的核心工具是archiveList标签。它允许您根据多种条件来筛选、排序和限制显示的文档数量。通过合理配置这个标签,您可以实现各种复杂的列表展示逻辑。

按分类显示文档列表

网站内容通常会按照不同的分类进行组织,比如“公司新闻”、“行业动态”或“产品介绍”等。如果您希望在一个页面上展示某个特定分类下的文档,可以使用categoryId参数。

例如,要显示ID为1的“公司新闻”分类下的最新文章,可以这样设置:

{% archiveList latestNews with categoryId="1" moduleId="1" order="id desc" limit="5" %}
    {% for item in latestNews %}
        <li><a href="{{ item.Link }}">{{ item.Title }}</a></li>
    {% endfor %}
{% endarchiveList %}

这里的moduleId用于指定内容模型,比如“文章模型”通常对应ID为1。如果您不想让列表自动获取当前页面的分类ID,可以通过设置categoryId="0"来明确排除。

此外,有时我们只想显示某个分类直接包含的文档,而不包括其子分类的文档。这时,可以结合child="false"参数来精确控制:

{% archiveList directArticles with categoryId="1" child="false" limit="10" %}
    {# 循环输出文档内容 #}
{% endarchiveList %}

根据推荐属性筛选内容

除了分类,安企CMS还提供了丰富的推荐属性(Flag),让您可以对重要或特殊的内容进行标记,并灵活地在前端展示。这些属性包括头条[h]、推荐[c]、幻灯[f]、特荐[a]、滚动[s]、加粗[h]、图片[p]和跳转[j]

例如,您想在首页展示几篇标记为“推荐”的文章,可以这样使用flag参数:

{% archiveList recommendedArticles with flag="c" moduleId="1" limit="3" %}
    {% for item in recommendedArticles %}
        <h3>{{ item.Title }}</h3>
        <p>{{ item.Description }}</p>
    {% endfor %}
{% endarchiveList %}

如果您希望排除某些推荐属性的内容,可以使用excludeFlag。而如果需要在列表中显示文档本身的推荐属性标记,则需要将showFlag参数设置为true

灵活排序与数量控制

archiveList标签还允许您对文档列表进行排序和数量限制,以满足不同场景下的展示需求:

  • 排序方式(order:您可以根据文档ID(如id desc显示最新)、浏览量(views desc显示最热门)或后台自定义排序(sort desc)来排列文档。
  • 显示数量(limit:除了指定显示固定数量(如limit="10"),您还可以使用偏移量模式(如limit="2,10",表示从第2条开始显示10条),这在一些特殊的布局或分步加载场景中非常有用。

例如,要显示浏览量最多的前5篇文章:

{% archiveList topViewsArticles with moduleId="1" order="views desc" limit="5" %}
    {% for item in topViewsArticles %}
        <li>{{ item.Title }} (浏览量:{{ item.Views }})</li>
    {% endfor %}
{% endarchiveList %}

结合自定义模型参数进行筛选:archiveFilters

对于一些更复杂的筛选需求,特别是当您的内容模型中定义了许多自定义字段(例如房产网站中的“户型”、“面积”、“价格区间”等),archiveFilters标签就显得尤为重要。

archiveFilters标签专门用于生成基于内容模型自定义参数的筛选条件。它通常与archiveList标签的type="page"(分页列表)模式配合使用。通过它,您可以构建出用户友好的筛选界面,让用户能够根据多个条件动态地过滤文档列表。

{% archiveFilters filterOptions with moduleId="2" allText="全部" %}
    {% for filterItem in filterOptions %}
        <div class="filter-group">
            <span>{{ filterItem.Name }}:</span>
            {% for option in filterItem.Items %}
                <a href="{{ option.Link }}" class="{% if option.IsCurrent %}active{% endif %}">{{ option.Label }}</a>
            {% endfor %}
        </div>
    {% endfor %}
{% endarchiveFilters %}

{% archiveList filteredProducts with type="page" moduleId="2" limit="12" %}
    {% for product in filteredProducts %}
        {# 展示产品详情 #}
        <h3>{{ product.Title }}</h3>
        <p>价格: {{ product.Price }}</p>
    {% endfor %}
{% endarchiveList %}

这里,filterOptions包含了所有可筛选的参数及其值,您可以遍历它们来生成前端的筛选链接。用户点击这些链接时,页面URL会携带相应的查询参数,archiveList便能自动识别并显示匹配的文档。

实现分页显示

当文档列表内容较多时,分页是必不可少的功能。将archiveList标签的type参数设置为"page"后,您就可以结合pagination标签来生成页码导航。

{% archiveList pagedArticles with type="page" moduleId="1" limit="10" %}
    {% for item in pagedArticles %}
        <li><a href="{{ item.Link }}">{{ item.Title }}</a></li>
    {% endfor %}
{% endarchiveList %}

{% pagination pages with show="5" %}
    <nav class="pagination">
        {% 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 %}
    </nav>
{% endpagination %}

pagination标签提供了包括首页、上一页、下一页、末页以及中间页码的完整分页数据,您可以根据需要自由构建分页导航的样式。

页面内的多列表展示

在一个页面中展示多个不同条件筛选的文档列表也是常见的需求。例如,一个首页可能需要“最新文章”、“热门产品”和“推荐服务”这几个独立的模块。此时,您只需使用多个archiveList标签,并为每个标签定义不同的变量名(例如latestArticleshotProductsfeaturedServices),然后分别设置它们的筛选条件即可。

<h2>最新文章</h2>
{% archiveList latestArticles with moduleId="1" order="id desc" limit="5" %}
    {# 循环展示最新文章 #}
{% endarchiveList %}

<h2>热门产品</h2>
{% archiveList hotProducts with moduleId="2" order="views desc" limit="4" %}
    {# 循环展示热门产品 #}
{% endarchiveList %}

通过上述这些标签和参数的灵活组合,您可以在安企CMS中构建出高度定制化、功能丰富的文档列表显示方案,从而更好地组织和呈现您的网站内容。


常见问题 (FAQ)

  1. 我能否在同一个页面上显示来自不同内容模型(如文章和产品)的文档列表? 当然可以。您只需在页面模板中使用多个archiveList标签,为每个列表指定不同的moduleId参数,并使用不同的变量名来接收数据,例如`{% archiveList articles with moduleId=”