在内容管理日益精细化的今天,如何让网站的文档列表能够根据不同需求灵活展示,是每位网站运营者都需要掌握的核心技能。安企CMS(AnQiCMS)凭借其强大的模板标签系统,为我们提供了极其便捷且高效的解决方案。本文将深入探讨如何在AnQiCMS中,根据分类、内容模型、推荐属性等多种条件,精准地筛选并显示您的文档列表。
核心利器:archiveList 标签
在AnQiCMS中,我们主要通过强大的archiveList模板标签来控制文档列表的显示。这个标签提供了丰富的参数,让您能够像搭建乐高积木一样,根据具体需求组合出各种复杂的筛选条件。无论是展示最新文章、热门产品,还是特定主题的内容,archiveList都能轻松应对。
一、根据分类筛选文档列表
网站内容通常会按照不同的分类进行组织,例如“公司新闻”、“行业动态”、“产品案例”等。当您希望在页面上展示特定分类下的文档时,archiveList标签的categoryId参数是您的首选。
- 指定单个分类: 您只需将所需分类的ID赋值给
categoryId参数即可。例如,categoryId="1"将只显示ID为1的分类下的文档。 - 指定多个分类: 如果您想在同一列表中显示来自多个分类的文档,只需用英文逗号将分类ID隔开,如
categoryId="1,2,3"。 - 包含子分类: AnQiCMS默认情况下会智能地将当前分类及其所有子分类的文档一并展示。如果您只想聚焦于当前分类本身,而排除其下的子分类,可以明确设置
child="false"。 - 排除特定分类: 如果您希望显示某个范围内的所有文档,但排除其中一两个不相关的分类,
excludeCategoryId参数就能派上用场,如excludeCategoryId="5"。
示例代码片段:
{# 显示ID为1的分类下的最新10篇文章,包含子分类 #}
{% archiveList articles with categoryId="1" order="id desc" limit="10" %}
{% for item in articles %}
<li><a href="{{item.Link}}">{{item.Title}}</a></li>
{% endfor %}
{% endarchiveList %}
二、根据内容模型筛选文档列表
安企CMS灵活的内容模型设计,让您可以轻松管理文章、产品、活动等不同类型的内容。在某些场景下,您可能希望在一个页面上,分别展示来自不同内容模型的数据。这时,moduleId参数就显得尤为重要。
- 指定特定模型: 每个内容模型都有一个唯一的ID。例如,文章模型可能ID为1,产品模型ID为2。您可以通过
moduleId="1"来获取所有文章,或者moduleId="2"来获取所有产品。
想象一下,您的网站既有技术文章,又有产品介绍,您可能希望在首页的不同区域分别展示它们,moduleId就能帮助您将不同类型的内容清晰地区分开来。
示例代码片段:
{# 显示所有产品模型下的最新5个产品 #}
{% archiveList products with moduleId="2" order="id desc" limit="5" %}
{% for item in products %}
<li>
<img src="{{item.Thumb}}" alt="{{item.Title}}">
<a href="{{item.Link}}">{{item.Title}}</a>
</li>
{% endfor %}
{% endarchiveList %}
三、根据推荐属性(Flag)筛选文档列表
安企CMS提供了一系列推荐属性(Flag),让您可以对重要内容进行标记,例如“头条”、“推荐”、“幻灯”等。这些标记在后台编辑文档时即可轻松设置,是提升内容曝光度和管理灵活性的绝佳工具。
- 指定推荐属性: 您可以通过
flag参数来筛选带有特定推荐属性的文档。常见的属性值包括:h:头条c:推荐f:幻灯a:特荐s:滚动p:图片j:跳转 您可以使用单个属性,例如flag="c"来获取所有推荐内容;也可以组合使用,例如flag="h,f"来获取既是头条又是幻灯片的内容。
- 排除推荐属性: 同样,如果您想避免某些特定属性的文档出现在列表中,
excludeFlag参数能帮您排除。
示例代码片段:
{# 显示带有“幻灯(f)”属性的最新3篇文档 #}
{% archiveList slides with flag="f" order="id desc" limit="3" %}
{% for item in slides %}
<div class="carousel-item">
<img src="{{item.Logo}}" alt="{{item.Title}}">
<h3>{{item.Title}}</h3>
</div>
{% endfor %}
{% endarchiveList %}
四、组合筛选与高级应用
这些筛选条件并非独立运作,您可以根据实际需求,将它们巧妙地组合起来,实现更精细的文档列表展示。
- 排序方式(
order): 您可以指定文档的排序规则,例如order="views desc"(按浏览量从高到低排序,即热门文档)、order="id desc"(按发布时间从新到旧排序,即最新文档)、order="sort desc"(按后台自定义排序)。 - 显示数量与分页(
limit与type):limit="10":用于固定数量的列表,例如在侧边栏显示最新的10篇文章。type="page":当您需要分页显示文档时,结合pagination标签使用,AnQiCMS会自动处理分页逻辑,无需您手动计算页码。
- 搜索关键词(
q): 当您在搜索结果页需要显示包含特定关键词的文档列表时,可以使用q="搜索关键词"。值得一提的是,当用户通过前端搜索框提交关键词时,AnQiCMS会自动捕捉URL中的q参数,并在archiveList标签中生效,实现无缝搜索。 - 相关文档(
type="related"): 在文档详情页,您可以使用type="related"来自动获取与当前文档相关的其他文档,这有助于提升用户停留时间。 - 自定义字段筛选(
archiveFilters): 除了以上内置属性,AnQiCMS还支持基于内容模型中自定义字段进行内容筛选。这通常与archiveFilters标签配合使用,用于在前端页面生成用户可交互的筛选器(如下拉菜单、复选框),让用户能根据产品颜色、尺寸等自定义属性进行筛选。这为您构建高度定制化的内容筛选功能提供了可能。
一个综合性的示例:显示某个分类下,带有“推荐”属性的热门文章,并支持分页。
”`twig {# 假设当前页面是分类列表页,categoryId会自动获取 #} {% archiveList popular_recommended_articles with type=“page” flag=“c” order=“views desc” limit=“10” %}
{% for item in popular_recommended_articles %}
<div class="article-card">
<img src="{{item.Thumb}}" alt="{{item.Title}}">
<h3><a href="{{item.Link}}">{{item.Title}}</a></h3>
<p>{{item.Description}}</p>
<span>发布日期: {{stampToDate(item.CreatedTime, "2006-01-02")}}</span>
<span>浏览量: {{item.Views}}</span>
</div>
{% empty %}
<p>当前分类下暂无推荐文章。</p>
{% endfor %}
{# 分页导航 #}
{% pagination pages with show="5"