如何在AnQiCMS中根据推荐属性(Flag)过滤显示特定文章列表?

安QiCMS以其灵活高效的内容管理能力,为运营者提供了丰富的工具来组织和展示网站内容。其中,“推荐属性”(Flag)就是一项非常实用的功能,它让您可以轻松地对文章进行分类标记,进而在网站前端实现内容的精准筛选和动态展示。本文将详细介绍如何在AnQiCMS中利用这些推荐属性,过滤并显示您想要的特定文章列表。

深入理解AnQiCMS的推荐属性(Flag)

AnQiCMS的推荐属性,顾名思义,是给文章打上的一种特殊标记,用于指示文章的某种特性或重要程度。这些属性在您编辑文章时可以灵活设置,它们就像是文章的“标签”或“状态”,帮助您在前端模板中实现精细化的内容呈现。

在AnQiCMS的后台“添加文档”界面,您会看到“推荐属性”这一项。它提供了一系列预设的属性及其对应的单字母标识:

  • 头条 [h]: 通常用于网站首页最重要、最受关注的文章。
  • 推荐 [c]: 指示该文章是编辑推荐的优质内容。
  • 幻灯 [f]: 适用于在幻灯片或轮播图中展示的文章。
  • 特荐 [a]: 具有特殊推荐价值的文章。
  • 滚动 [s]: 适合在滚动新闻或公告区域显示的内容。
  • 加粗 [h]: (注意:此标识与“头条”属性相同,可能用于视觉强调,具体取决于模板实现)
  • 图片 [p]: 表明该文章拥有高质量的图片,适合图片展示区域。
  • 跳转 [j]: 通常用于文章点击后会跳转到外部链接的情况。

您可以为每篇文章选择一个或多个推荐属性,也可以不选择。这些灵活的标记是我们在前端模板中进行内容筛选的核心依据。

在模板中运用推荐属性筛选文章列表

要在AnQiCMS的前端模板中根据推荐属性过滤显示文章列表,我们主要会用到archiveList这个强大的模板标签。

archiveList标签提供了flagexcludeFlag两个参数,专门用于处理推荐属性的筛选需求。

1. 筛选特定推荐属性的文章

如果您希望只显示带有某个特定推荐属性的文章,例如只显示“推荐”属性([c])的文章,可以这样使用archiveList标签:

{% archiveList recommendedArticles with flag="c" limit="10" %}
    {% for item in recommendedArticles %}
    <li>
        <a href="{{item.Link}}">
            <h5>{{item.Title}}</h5>
            <p>{{item.Description}}</p>
        </a>
    </li>
    {% empty %}
    <li>当前没有推荐文章。</li>
    {% endfor %}
{% endarchiveList %}

在这段代码中:

  • archiveList recommendedArticles:我们定义了一个变量recommendedArticles来存储筛选出的文章列表。
  • flag="c":这是关键。它告诉AnQiCMS只获取那些被标记为“推荐”属性的文章。
  • limit="10":限制只显示最新的10篇文章。您可以根据需要调整这个数字。

需要注意的是,根据AnQiCMS的文档说明,flag参数一次只能指定一个推荐属性的字符(如"c""f"),用于“选择”性地显示文章。

2. 排除特定推荐属性的文章

有时您可能希望显示某个分类下的所有文章,但排除掉其中具有特定推荐属性的文章,例如排除“幻灯”属性([f])的文章。这时,excludeFlag参数就派上用场了。

{% archiveList regularArticles with categoryId="1" excludeFlag="f" limit="5" %}
    {% for item in regularArticles %}
    <li>
        <a href="{{item.Link}}">
            <h4>{{item.Title}}</h4>
        </a>
    </li>
    {% empty %}
    <li>当前没有符合条件的文章。</li>
    {% endfor %}
{% endarchiveList %}

在这个例子中:

  • categoryId="1":指定只在ID为1的分类下筛选文章。
  • excludeFlag="f":将排除所有被标记为“幻灯”属性的文章,即使它们属于指定分类。
  • flag参数不同,excludeFlag参数可以接受多个推荐属性字符,用逗号隔开,例如excludeFlag="f,s"表示同时排除“幻灯”和“滚动”属性的文章。

3. 结合其他参数实现更精确的筛选

flagexcludeFlag参数可以与archiveList标签的其他参数灵活组合,以满足更复杂的筛选需求,例如:

  • 按模型筛选 (moduleId):如果您想在产品模型中筛选“推荐”产品,可以添加moduleId="2"(假设产品模型的ID为2)。
  • 按分类筛选 (categoryId):正如上面示例所示,可以限定在特定分类中进行属性筛选。
  • 按排序方式 (order):可以结合order="views desc"显示带有特定属性且浏览量最高的文章。
  • 分页显示 (type="page"):如果筛选出的文章数量较多,可以配合分页功能来展示。

例如,显示文章模型(ID为1)中分类ID为5的最新5篇“头条”文章:

{% archiveList headlineNews with moduleId="1" categoryId="5" flag="h" order="id desc" limit="5" %}
    {% for item in headlineNews %}
    <div class="headline-item">
        <img src="{{item.Thumb}}" alt="{{item.Title}}">
        <h3><a href="{{item.Link}}">{{item.Title}}</a></h3>
        <span>发布日期: {{stampToDate(item.CreatedTime, "2006-01-02")}}</span>
    </div>
    {% endfor %}
{% endarchiveList %}

实战案例:定制你的内容展示

设想您的网站首页有一个“精选推荐”区域,需要显示编辑特别推荐的几篇文章;同时,在文章列表页的侧边栏,您希望展示一些热门文章,但不想让首页的幻灯片文章重复出现。

案例一:首页精选推荐区

”`twig