在安企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标签,并为每个标签定义不同的变量名(例如latestArticles、hotProducts、featuredServices),然后分别设置它们的筛选条件即可。
<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)
- 我能否在同一个页面上显示来自不同内容模型(如文章和产品)的文档列表?
当然可以。您只需在页面模板中使用多个
archiveList标签,为每个列表指定不同的moduleId参数,并使用不同的变量名来接收数据,例如`{% archiveList articles with moduleId=”