作为一名资深的安企CMS网站运营人员,我深知高效的内容管理对于吸引和留住用户至关重要。安企CMS提供的模板标签体系是其强大之处,其中archiveList标签更是日常内容展示的核心。它能够帮助我们灵活地从数据库中提取文章、产品等内容,并以我们希望的方式进行排序和展示。
理解 archiveList 标签的核心作用
在安企CMS的模板设计中,archiveList标签扮演着内容列表生成器的角色。无论您是想在首页展示最新文章,在分类页列出相关产品,亦或是在文章详情页推荐相关内容,archiveList都能满足您的需求。它通过一系列参数,让您能够精确控制要获取哪些内容、如何筛选它们以及以何种顺序呈现。
使用archiveList时,您通常会将其包裹在一个{% archiveList 变量名称 ... %}和{% endarchiveList %}标签对中。其中,变量名称是您为获取到的内容列表自定义的一个变量名,例如archives或products,这个变量将在标签内部的for循环中使用。
一个基本的archiveList结构看起来会是这样:
{% archiveList archives with type="list" limit="10" %}
{% for item in archives %}
<div class="article-item">
<a href="{{item.Link}}">{{item.Title}}</a>
<p>{{item.Description}}</p>
<span>发布日期: {{stampToDate(item.CreatedTime, "2006-01-02")}}</span>
<span>浏览量: {{item.Views}}</span>
</div>
{% empty %}
<p>当前列表没有任何内容。</p>
{% endfor %}
{% endarchiveList %}
在这里,archives是我们的内容列表变量,item是for循环中当前内容的临时变量。empty标签则提供了一个优雅的方式来处理列表为空的情况。
精准筛选:控制内容的来源
archiveList提供了多种参数来精准筛选您想要展示的内容。
首先,moduleId参数允许您指定内容所属的模型,例如moduleId="1"可能代表文章模型,而moduleId="2"可能代表产品模型。这确保了您获取的是特定类型的内容。
其次,categoryId参数用于从特定分类中获取内容。您可以指定单个分类ID(categoryId="1"),也可以指定多个分类ID(categoryId="1,2,3")。如果您希望获取当前页面所属分类的内容,但又不想硬编码ID,archiveList会自动读取当前页面的分类ID。如果您不希望它自动读取,可以明确设置为categoryId="0"。此外,excludeCategoryId则允许您排除特定分类的内容。
userId参数可以用来获取由特定作者发布的文章,而parentId则用于获取指定上级文档的下级文档,这在构建多层级内容结构时非常有用。
对于带有推荐属性(如头条、推荐、幻灯等)的内容,flag参数能够帮助您筛选出这些特殊标记的内容,例如flag="c"将显示被标记为“推荐”的文章。相应的,excludeFlag则可以排除具有特定属性的内容。如果您需要前端显示内容的flag属性,可以设置showFlag=true。
在列表展示中,q参数可以用来进行关键词搜索,它会匹配内容的标题。如果URL中已存在q=关键词的查询参数,archiveList也能自动识别并应用。
灵活排序:按ID、浏览量或自定义顺序呈现
archiveList最强大的功能之一是其灵活的排序机制,通过order参数,您可以轻松地控制内容的展示顺序。
按ID排序:若要按照文章的ID(通常代表发布时间,因为ID是自增的)进行排序,您可以设置order="id desc"来显示最新发布的内容(ID越大越新),或者order="id asc"来显示最早发布的内容。
按浏览量排序:为了突出热门文章或产品,您可以根据浏览量进行排序。设置order="views desc"将使浏览量最高的内容排在前面,而order="views asc"则反之。
按自定义顺序排序:安企CMS允许在后台对内容进行自定义排序。如果您在后台手动调整了内容的顺序,并希望前端按照这个顺序展示,可以使用order="sort desc"。默认情况下,如果不指定order参数,archiveList也会按照后台的自定义排序(sort desc)来展示内容。
以下是排序参数的示例:
{# 按照最新发布(ID降序)排序的前10篇文章 #}
{% archiveList archives with order="id desc" limit="10" %}
{% for item in archives %}
<p>最新文章: {{item.Title}}</p>
{% endfor %}
{% endarchiveList %}
{# 按照浏览量最高(views降序)排序的前5篇热门文章 #}
{% archiveList hot_articles with order="views desc" limit="5" %}
{% for item in hot_articles %}
<p>热门文章: {{item.Title}} (浏览量: {{item.Views}})</p>
{% endfor %}
{% endarchiveList %}
{# 按照后台自定义排序的前8个产品 #}
{% archiveList custom_products with moduleId="2" order="sort desc" limit="8" %}
{% for item in custom_products %}
<p>推荐产品: {{item.Title}}</p>
{% endfor %}
{% endarchiveList %}
控制数量与分页展示
limit参数用于控制每次获取内容的数量。例如,limit="10"将只显示10条内容。limit还支持“偏移量”模式,例如limit="2,10"将从第三条内容开始,获取10条内容(跳过前2条)。
type参数决定了列表的展现形式。当type="list"时,它只会按照limit指定的数量显示内容。而当type="page"时,它将启用分页功能,通常会与pagination标签结合使用,以构建完整的页码导航。
相关内容与高级组合
archiveList还支持获取相关内容。当type="related"时,标签会根据当前文档的ID智能地查找同分类的临近文档。您还可以通过like="keywords"让它根据文档的关键词来查找相关内容,或者like="relation"来精确匹配后台手动设置的相关文档。
更高级的用法包括combineId和combineFromId,这些参数允许您在列表中附加另一个文档,从而创建复杂的组合标题和链接。例如,您可以利用这个功能来生成“从北京到上海的旅游线路”这样的内容,其中“北京”和“上海”是两个独立的文档,但在列表展示时被巧妙地组合起来。在这种情况下,您可以使用{{combine.Title}}或{{combineArchive.Title}}来引用组合文档的字段。
总结
archiveList标签是安企CMS模板设计中不可或缺的工具。通过灵活运用其moduleId、categoryId、flag等筛选参数,结合order参数实现按ID、浏览量或自定义顺序排序,以及limit和type参数进行数量控制和分页管理,网站运营人员能够轻松构建出满足各种业务需求的高效内容列表,从而提升用户体验和网站内容的吸引力。熟练掌握archiveList标签的使用,将极大提高您的内容管理效率和网站的灵活性。
常见问题解答 (FAQ)
1. archiveList标签的order参数支持哪些排序方式?
order参数支持多种排序方式来控制内容的展示顺序。常见的包括按ID降序(order="id desc")或升序(order="id asc"),按浏览量降序(order="views desc")或升序(order="views asc"),以及按后台自定义排序(order="sort desc")。如果不指定order参数,默认会采用后台自定义排序。
2. 如何在archiveList中同时获取多个分类的内容?
您可以通过在categoryId参数中使用逗号将多个分类ID分隔开,例如categoryId="1,5,8"。这样archiveList就会返回这三个分类下的所有内容。如果您希望获取所有分类的内容,可以省略categoryId,或者在categoryList标签中指定all=true来获取所有分类后,再通过循环分别调用archiveList。
3. archiveList的type="page"和type="list"有什么区别?
当type="list"时,archiveList仅根据limit参数指定的数量返回一个内容列表,没有分页功能。而当type="page"时,archiveList会为内容列表生成分页数据,通常需要与{% pagination %}标签结合使用,以便在前端展示页码导航和切换页面。type="page"通常用于分类列表页、搜索结果页等需要分页展示大量内容的场景。