文档列表如何根据分类、模型、推荐属性等条件进行筛选显示?

在内容管理日益精细化的今天,如何让网站的文档列表能够根据不同需求灵活展示,是每位网站运营者都需要掌握的核心技能。安企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"(按后台自定义排序)。
  • 显示数量与分页(limittype):
    • 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"