在AnQiCMS中,灵活地展示内容是构建高效网站的关键之一。archiveList标签正是这样一个强大的工具,它允许我们根据多种条件筛选和展示网站的文档列表。无论是想在特定页面展示某一类文章,还是根据内容类型或编辑推荐来组织信息,archiveList都能提供精准的控制。
精准定位:根据分类ID筛选文档列表
当我们希望在网站的某个区域,例如侧边栏或者某个专题页面,展示特定分类下的文档时,categoryId参数就派上了用场。这个参数让我们可以指定一个或多个分类的ID,从而精确地提取出这些分类下的所有文档。
例如,如果你想展示ID为1的“公司新闻”分类下的文章,你可以这样使用:
{% archiveList archives with categoryId="1" limit="5" %}
{# 在这里循环展示文档 #}
{% endarchiveList %}
如果你的内容跨越多个分类,例如同时想展示ID为1的“公司新闻”和ID为3的“行业动态”下的文档,只需将这些ID用逗号分隔开:
{% archiveList archives with categoryId="1,3" limit="10" %}
{# 结合多个分类ID展示文档 #}
{% endarchiveList %}
值得注意的是,AnQiCMS的分类可以有层级关系。默认情况下,当你指定一个父级分类ID时,archiveList会自动包含其所有子分类下的文档。但如果你只希望展示当前指定分类(不包含其子分类)的文档,可以通过将child参数设置为false来实现:
{% archiveList archives with categoryId="1" child=false limit="5" %}
{# 只展示ID为1分类下的文档,不包含其子分类 #}
{% endarchiveList %}
此外,在某些特殊的页面场景下,我们可能希望archiveList不自动继承当前页面的分类ID,而是完全由我们手动指定。这时,可以将categoryId明确设置为"0",以避免任何自动继承的行为。
内容划分:根据模型ID筛选文档列表
AnQiCMS的“内容模型”功能是其高度灵活性的体现。它允许我们定义不同类型的内容结构,例如“文章模型”、“产品模型”甚至是“案例模型”等。当我们需要区分这些不同类型的内容并在前端展示时,moduleId参数就显得尤为重要。
通过指定moduleId,我们可以确保archiveList只提取属于某个特定内容模型的文档。例如,如果“文章模型”的ID是1,而“产品模型”的ID是2,那么我们可以这样操作:
想展示最新的5篇“文章”:
{% archiveList articles with moduleId="1" order="id desc" limit="5" %}
{# 展示最新的5篇文章 #}
{% endarchiveList %}
如果想列出全部的“产品”:
{% archiveList products with moduleId="2" type="page" limit="10" %}
{# 列出所有产品,并支持分页 #}
{% endarchiveList %}
这种按模型筛选的方式,让网站的内容结构更加清晰,也方便了针对不同内容模型进行差异化的展示和管理。
突出重点:根据推荐属性筛选文档列表
除了分类和模型,AnQiCMS还提供了“推荐属性”功能,让内容运营者可以给文档打上特殊的标记,以实现“头条”、“推荐”、“幻灯”等突出显示的效果。flag参数便是用来利用这些推荐属性进行筛选的。
AnQiCMS支持多种推荐属性,每种属性都有一个对应的字母标识,例如:
h:头条c:推荐f:幻灯a:特荐s:滚动p:图片j:跳转
当你希望在首页的幻灯片区域展示那些被标记为“幻灯”的文档时,可以这样设置flag参数:
{% archiveList slides with flag="f" limit="3" %}
{# 展示3篇被标记为“幻灯”的文档 #}
{% endarchiveList %}
你也可以同时筛选出具有多个推荐属性的文档,例如既是“推荐”又是“图片”的文档(尽管通常情况下只使用一个主要属性):
{% archiveList featuredImages with flag="c,p" limit="4" %}
{# 展示4篇既是“推荐”又是“图片”的文档 #}
{% endarchiveList %}
与flag相对应的是excludeFlag,如果你希望排除某种推荐属性的文档,例如不显示任何“头条”内容,可以这样使用:
{% archiveList regularContent with excludeFlag="h" limit="10" %}
{# 展示除了“头条”之外的10篇文档 #}
{% endarchiveList %}
组合使用,实现更精细的筛选
archiveList标签的强大之处在于,上述这些筛选条件并非互相排斥,而是可以灵活组合使用的。通过同时指定categoryId、moduleId和flag,我们可以构建出非常具体的文档列表。
例如,如果你想展示ID为1的“文章模型”下,且分类ID为5,并且被标记为“推荐”的最新10篇文档,你可以这样组合这些参数:
{% archiveList targetedArticles with moduleId="1" categoryId="5" flag="c" order="id desc" limit="10" %}
{# 精准筛选:文章模型,分类ID为5,推荐属性,最新10篇 #}
{% endarchiveList %}
此外,对于使用AnQiCMS多站点管理功能的用户,还可以通过siteId参数来指定获取哪个站点下的文档列表,确保在多站点环境中也能灵活调用内容。
通过这些参数的灵活运用,archiveList标签能够帮助我们精确地控制网站内容的展示,无论是为了提升用户体验,还是为了优化搜索引擎排名,都能提供强有力的支持。
常见问题 (FAQ)
1. 我想在一个页面展示某个分类下的最新文档,并且这些文档必须是“文章模型”的,该怎么写?
你可以结合categoryId、moduleId和order参数来实现。假设分类ID为5,文章模型ID为1:
{% archiveList recentArticles with categoryId="5" moduleId="1" order="id desc" limit="5" %}
{# 在这里循环展示最新5篇“文章模型”下的分类5文档 #}
{% endarchiveList %}
2. 如何避免archiveList自动获取当前页面的分类ID,而是完全按照我指定的ID来筛选?
你可以将categoryId参数明确设置为"0",这样archiveList就不会尝试读取当前页面的分类信息,而只会使用你手动指定(或未指定)的其他筛选条件。
{% archiveList myCustomList with categoryId="0" moduleId="1" limit="10" %}
{# 确保不继承当前页面的分类ID,只展示模型ID为1的文档 #}
{% endarchiveList %}
3. 如果我想在一个列表中排除所有被标记为“头条”的文档,同时又只想显示某个分类下的内容,可以吗?
当然可以。你可以同时使用categoryId和excludeFlag参数。假设分类ID为10,需要排除的头条属性为h:
{% archiveList filteredList with categoryId="10" excludeFlag="h" limit="8" %}
{# 展示分类ID为10,且不是头条的8篇文档 #}
{% endarchiveList %}