在安企CMS中,archiveList 标签是构建动态内容列表的核心工具,它让你可以灵活地从网站的文档库中提取并展示你想要的内容。无论是展示特定分类下的最新文章,还是某个内容模型下的热门产品,抑或是带有特定推荐属性的专题文档,archiveList 都能通过其丰富的参数配置,帮助你精准地实现这些需求。
精准定位内容:分类、模型与推荐属性
首先,让我们了解archiveList标签在筛选内容方面最常用的几个维度:分类、内容模型和推荐属性。
1. 按分类筛选文档 (categoryId)
网站的内容通常会根据其主题被归类到不同的分类下,比如“公司新闻”、“行业动态”或“产品介绍”等。archiveList标签可以通过categoryId参数,让你轻松地指定要展示哪个或哪些分类下的文档。
- 指定单个或多个分类:如果你想显示某个特定分类(例如ID为10)下的文档,可以这样使用:
{% archiveList archives with categoryId="10" %}。如果需要显示多个分类(例如ID为10、12、15)下的文档,只需用逗号将它们隔开:{% archiveList archives with categoryId="10,12,15" %}。 - 控制子分类内容:在某些情况下,你可能只希望显示当前分类本身的文档,而不包含其子分类的内容。这时,
child="false"参数就派上用场了。默认情况下,archiveList是会包含子分类内容的。如果你只想要当前分类(ID为10)的文档,可以这样写:{% archiveList archives with categoryId="10" child="false" %}。 - 不依赖当前页面分类:有时,即便你在分类页面,也可能不希望
archiveList自动读取当前页面的分类ID。这时,你可以明确设置categoryId="0"来阻止这种自动行为,并自行指定需要筛选的分类ID。
2. 按内容模型筛选文档 (moduleId)
安企CMS的一大亮点在于其灵活的内容模型机制,它允许你为不同类型的内容(如文章、产品、案例等)定义独立的字段结构。archiveList标签通过moduleId参数,可以让你精确地筛选出属于特定内容模型的文档。
- 识别内容模型:在安企CMS的后台,你可以为不同的内容类型创建内容模型(例如,系统默认的“文章模型”和“产品模型”)。每个内容模型都有一个唯一的ID。通过指定这个ID,
archiveList就能只显示该模型下的文档。例如,如果你想显示产品模型下的文档,而产品模型ID为2,可以这样使用:{% archiveList products with moduleId="2" %}。 - 结合分类与模型:你还可以将
moduleId和categoryId结合使用,比如显示某个分类下,且属于产品模型的产品列表。
3. 按推荐属性筛选文档 (flag)
在发布文档时,安企CMS提供了多种推荐属性,如“头条”、“推荐”、“幻灯”等,这些属性用不同的字母标识(例如,h代表头条,c代表推荐)。archiveList标签可以通过flag参数,根据这些属性来筛选内容。
- 指定推荐属性:如果你想在首页展示所有被标记为“推荐”的文档,可以这样使用:
{% archiveList featuredDocs with flag="c" %}。你可以组合使用多个属性,例如flag="h,c"会显示既是头条又是推荐的文档。 - 排除特定属性:如果想排除某些特定属性的文档,可以使用
excludeFlag参数。例如,{% archiveList normalDocs with excludeFlag="h" %}会显示所有非头条的文档。 - 显示属性标识:如果你需要在列表中显示文档的推荐属性,可以在
archiveList标签中添加showFlag="true"参数。
扩展筛选能力:更多实用参数
除了上述核心筛选条件,archiveList还提供了其他多种参数来进一步优化你的内容列表:
- 排序方式 (
order):你可以根据文档ID(最新发布)、浏览量(最热门)或后台自定义排序来排列文档。例如,order="id desc"表示按ID降序(最新发布),order="views desc"表示按浏览量降序。 - 显示数量与分页 (
limit,type="page"):limit参数用于控制显示多少条文档。如果你需要实现分页功能,可以将type参数设置为"page",并结合pagination标签来创建完整的分页导航。 - 搜索关键词 (
q):在搜索结果页,q参数可以用来匹配文档标题中包含特定关键词的内容。如果URL中已包含q参数,archiveList会自动读取并应用。 - 自定义筛选参数:安企CMS允许你在后台为内容模型定义自定义字段。如果这些字段被设置为可筛选,
archiveList可以根据URL中的查询参数进行进一步筛选,这对于创建高度定制化的筛选界面(如房产网站按面积、户型筛选)非常有用。你可以结合archiveFilters标签来构建这些筛选条件。 - 多站点数据调用 (
siteId):如果你使用了安企CMS的多站点管理功能,siteId参数可以让你调用其他站点的数据。 - 组合文档展示 (
combineId,combineFromId):这是一个高级用法,用于在列表中将多个文档组合显示,比如展示“从A地到B地的旅游线路”,它可以动态地组合文档标题和链接,常用于比较或组合信息场景。
实际应用场景示例
让我们通过几个常见场景,看看archiveList标签如何发挥作用:
场景一:在首页展示最新的5篇公司新闻
假设“公司新闻”分类的ID是10,且属于“文章模型”(ID为1)。
<div class="latest-news">
<h2>最新公司新闻</h2>
<ul>
{% archiveList news with moduleId="1" categoryId="10" limit="5" order="id desc" %}
{% for item in news %}
<li>
<a href="{{ item.Link }}">{{ item.Title }}</a>
<span>发布日期:{{ stampToDate(item.CreatedTime, "2006-01-02") }}</span>
</li>
{% empty %}
<li>暂无公司新闻。</li>
{% endfor %}
{% endarchiveList %}
</ul>
</div>
场景二:在侧边栏展示热门推荐产品
假设“产品模型”的ID是2,并且产品被标记为“推荐”(c)。
<div class="hot-products">
<h3>热门推荐产品</h3>
<ul>
{% archiveList hotProducts with moduleId="2" flag="c" limit="3" order="views desc" %}
{% for item in hotProducts %}
<li>
<a href="{{ item.Link }}">
<img src="{{ item.Thumb }}" alt="{{ item.Title }}">
{{ item.Title }}
</a>
</li>
{% empty %}
<li>暂无推荐产品。</li>
{% endfor %}
{% endarchiveList %}
</ul>
</div>
场景三:在分类页面展示当前分类及其子分类的文章列表,并支持分页
假设文章模型ID为1,并且在分类页面的模板中,archiveList会自动获取当前分类ID。
<div class="category-articles">
<h1>{% categoryDetail with name="Title" %}</h1> {# 显示当前分类标题 #}
<ul>
{% archiveList articles with moduleId="1" type="page" limit="10" order="id desc" %}
{% for item in articles %}
<li>
<a href="{{ item.Link }}">{{ item.Title }}</a>
<span>所属分类:{% categoryDetail with name="Title" id=item.CategoryId %}</span>
<span>阅读量:{{ item.Views }}</span>
</li>
{% empty %}
<li>当前分类下暂无文章。</li>
{% endfor %}
{% endarchiveList %}
</ul>
{# 分页导航 #}
{% pagination pages with show="5" %}
<div class="pagination-nav">
{% 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 %}
</div>
{% endpagination %}
</div>
通过这些灵活的参数组合,archiveList标签可以帮助你构建出高度定制化且功能强大的内容列表,满足各种内容展示需求。
常见问题 (FAQ)
1. 如何在archiveList标签中同时应用多个筛选条件?
你可以在archiveList标签中直接同时添加多个参数,系统会自动将这些条件组合起来进行筛选。例如,如果你想获取“文章模型”(moduleId="1")下,“公司新闻”分类(categoryId="10"),且带有“推荐”属性(flag="c")的最新5篇文章,可以这样写:
{% archiveList news with moduleId="1" categoryId="10" flag="c" limit="5" order="id desc" %}。
2. archiveList标签可以在网站的哪些页面使用?
archiveList标签理论上可以在网站的任何模板文件(如首页、分类页、详情页、搜索结果页、自定义页面等)中使用。当你在非分类页或非模型页使用时,你可能需要更明确地指定moduleId或categoryId等参数。但在分类页或模型页