如何在文章列表页中根据特定条件(如推荐属性)筛选并展示内容?

📅 👁️ 61

在我们的网站内容运营中,文章列表页往往承担着重要的展示职责。我们不希望仅仅按照发布时间机械地排列内容,而是希望能根据一些特定的条件,比如内容的重要性、热门程度或者是否被推荐,来灵活地筛选和展示文章。安企CMS(AnQiCMS)在设计之初就充分考虑了这些需求,为我们提供了简单而强大的内容筛选机制。

今天,我们就来聊聊如何在安企CMS的文章列表页中,根据特定条件(比如“推荐属性”)来筛选并展示内容。

第一步:在后台为文章设置“推荐属性”

要让前台列表能够根据推荐属性来筛选文章,首先我们需要在后台给文章打上这些“标签”。

当你进入安企CMS的后台管理界面,在“内容管理”菜单下选择“发布文档”或“编辑文档”时,你会看到一个名为“推荐属性”的选项区域。这里提供了多种预设的属性,例如“头条[h]”、“推荐[c]”、“幻灯[f]”等等。

这些属性就像是文章的“身份标识”。你可以根据文章的重要性或展示意图,为它勾选一个或多个属性。比如,一篇特别重要的文章,你可能同时勾选“头条[h]”和“推荐[c]”。当然,如果一篇文章不需要任何特殊标识,保持不勾选也是可以的。

值得注意的是,每个属性都对应一个字母标识(例如“推荐”对应c, “头条”对应h),这个字母在前台模板中将是用来筛选的关键。

第二步:在模板中灵活调用并筛选内容

设置好后台属性后,接下来就是在网站前台模板中实现筛选展示了。安企CMS采用了类似Django模板引擎的语法,使用起来非常直观。我们主要会用到archiveList这个强大的模板标签。

archiveList标签是用来获取文章列表的核心工具。它支持多种参数,让我们能够根据不同的条件来检索内容。要根据推荐属性筛选,我们只需要用到它的flag参数。

假设我们希望在一个特定的区域,比如网站首页的“编辑推荐”栏目,展示所有被标记为“推荐[c]”的文章,我们可以这样编写模板代码:

{# 假设这里是你的“编辑推荐”模块 #}
<div class="editor-recommend-section">
    <h3>编辑推荐</h3>
    <ul>
        {# 使用 archiveList 标签来获取文章列表 #}
        {% archiveList recommendedArticles with moduleId="1" flag="c" order="id desc" limit="5" type="list" %}
            {% for item in recommendedArticles %}
            <li>
                <a href="{{ item.Link }}" title="{{ item.Title }}">
                    {# 如果文章有缩略图,我们当然希望它能显示出来 #}
                    {% if item.Thumb %}
                        <img src="{{ item.Thumb }}" alt="{{ item.Title }}">
                    {% endif %}
                    <h4>{{ item.Title }}</h4>
                    <p>{{ item.Description|truncatechars:80 }}</p>
                    <span class="publish-date">{{ stampToDate(item.CreatedTime, "2006-01-02") }}</span>
                </a>
            </li>
            {% empty %}
            <li>
                抱歉,目前没有推荐文章。
            </li>
            {% endfor %}
        {% endarchiveList %}
    </ul>
</div>

让我们简单解读一下这段代码:

  • archiveList recommendedArticles with ...: 这是调用文章列表标签,并将获取到的数据存储在recommendedArticles这个变量中。
  • moduleId="1": 这个参数指定了我们要获取的是“文章模型”的内容。如果你的推荐属性是为产品设置的,那么这里可能就是moduleId="2"(或其他自定义模型的ID)。
  • flag="c": 这就是根据“推荐[c]”属性进行筛选的关键!它告诉系统只返回那些被标记为“推荐”的文章。
  • order="id desc": 我们可以选择文章的排序方式,这里是按ID降序,也就是最新发布的推荐文章会排在前面。你也可以改成order="views desc"来展示浏览量最高的推荐文章。
  • limit="5": 我们限制只显示最新的5篇推荐文章。
  • type="list": 表示我们只是获取一个简单的列表,不需要分页功能。如果需要分页,可以设置成type="page",并结合pagination标签使用。
  • {% for item in recommendedArticles %}: 这是一个循环,遍历recommendedArticles中的每一篇文章数据。
  • {{ item.Link }}, {{ item.Title }}, {{ item.Thumb }}, {{ item.Description }}, {{ item.CreatedTime }}: 这些都是文章的内置字段,通过item.前缀可以直接访问。item.Description|truncatechars:80使用了过滤器来截取描述的长度。stampToDate是安企CMS提供的日期格式化函数,让时间显示更友好。
  • {% empty %}: 这是一个很实用的功能,当recommendedArticles为空时(即没有符合条件的文章),就会显示empty块中的内容。

更多筛选组合

除了仅仅筛选“推荐”文章,你还可以灵活组合其他参数:

  • 排除特定属性: 如果你想展示除了“头条”以外的所有文章,可以使用excludeFlag="h"
  • 筛选特定分类下的推荐文章: 结合categoryId参数,例如categoryId="10" flag="c",表示只显示分类ID为10的推荐文章。
  • 展示推荐属性本身: 如果你想在列表项中显示文章的推荐属性(例如“[推荐]”字样),可以在archiveList中添加showFlag=true参数,然后在循环中使用{{item.Flag}}来获取并显示它。

结合实际场景的应用

这种基于推荐属性的筛选能力在实际运营中非常有用:

  1. 网站首页: 可以设置“今日头条”、“编辑精选”、“幻灯片推荐”等多个模块,分别通过不同的flag来展示对应的内容。
  2. 侧边栏/底部推荐: “热门文章”、“最新推荐”等区域,利用flagorder(如按浏览量排序)参数,可以轻松实现动态的内容展示。
  3. 专题页面: 在制作专题时,你可以为专题内的特定文章打上专属的推荐属性,然后在专题页面中精准地调用这些精选内容。

通过安企CMS提供的archiveList标签和推荐属性功能,我们能够轻松地构建出内容丰富、层次分明的文章列表页,让网站的内容运营变得更加高效和灵活。


常见问题 (FAQ)

1. 我能否在同一个archiveList标签中同时筛选多个推荐属性的文章,比如既要“头条[h]”又要“推荐[c]”? 安企CMS的archiveList标签在flag参数上目前设计为每次调用只支持筛选一个推荐属性。如果你需要展示同时具备“头条”和“推荐”属性的文章,或者需要展示包含“头条”“推荐”属性的文章,你需要分开调用archiveList标签,或者在后台为这些文章设置一个全新的组合属性(如果业务逻辑允许),但更常见和推荐的做法是使用单个flag参数来获取一个特定类型的推荐内容列表。

2. 如何在文章标题旁边直接显示它的推荐属性,比如“[推荐] 安企CMS入门指南”? 这是可以实现的。在archiveList标签中,添加一个showFlag=true的参数。这样,在循环文章数据时,每个item对象就会包含一个Flag字段,其值就是文章的推荐属性字母(例如c)。你可以在模板中这样显示:

{% archiveList articles with moduleId="1" limit="5" showFlag=true %}
    {% for item in articles %}
    <li>
        {% if item.Flag %}[{{ item.Flag }}]{% endif %}
        <a href="{{ item.Link }}">{{ item.Title }}</a>
    </li>
    {% endfor %}
{% endarchiveList %}

你甚至可以根据item.Flag的值进行条件判断,显示更友好的文字,比如将c显示为“推荐”,将h显示为“头条”。

3. 除了文章列表,这个筛选功能也适用于产品列表或其他自定义内容模型吗? 完全可以。安企CMS的archiveList标签是通用的内容列表标签,它通过moduleId参数来指定要操作的内容模型。无论是文章、产品,还是你通过“内容模型”功能自定义的任何内容类型,只要你在后台为这些内容设置了“推荐属性”,就可以在前台通过moduleId配合flag参数进行筛选和展示。例如,要筛选“产品模型”(

相关文章

如何将时间戳格式化为可读的

## 让时间说话:安企CMS中如何将时间戳格式化为可读日期 在运营网站时,内容的时效性往往是用户非常关注的一点。无论是文章的发布时间、产品信息的更新时间,还是用户评论的具体时刻,清晰直观的日期和时间都能大大提升用户体验,甚至对搜索引擎优化(SEO)也有积极影响。然而,在内容管理系统的后台,我们有时会看到时间以一串长长的数字形式呈现,比如 `1609470335`。这就是所谓的时间戳

2025-11-08

如何在AnQiCMS模板中安全地输出用户生成的内容,防止XSS攻击影响页面显示?

网站内容运营中,用户生成的内容(User-Generated Content, UGC)无疑是提升网站活力和互动性的宝贵资源。无论是评论、留言、论坛帖子,还是经过富文本编辑器编辑的文章内容,这些都极大丰富了网站的信息生态。然而,伴随UGC而来的,是潜在的安全风险,其中最常见且危害较大的便是跨站脚本(XSS)攻击。如果不加以防范,恶意的脚本代码可能会在用户浏览器中执行,窃取用户数据、篡改页面

2025-11-08

AnQiCMS的模板继承功能如何实现母版页和子页面的内容区块显示覆盖和定制?

## 灵活定制网站:AnQiCMS 的模板继承如何让母版页和子页面各显神通? 在网站内容管理中,保持页面风格一致性同时又能灵活修改局部内容,是许多运营者追求的目标。AnQiCMS 采用类似 Django 模板引擎的语法,为我们提供了一个优雅的解决方案,那就是强大的模板继承功能。通过这个功能,我们可以巧妙地设计母版页和子页面,让网站结构既统一又高度可定制。 想象一下

2025-11-08

如何在AnQiCMS模板中使用`macro`宏函数,定义可复用的内容显示片段以提高效率?

在安企CMS中,高效地管理网站内容和前端展示是日常运营的关键。当我们面对一些重复出现的页面元素,比如文章列表项、产品卡片或者带有特定样式的按钮时,如果每次都重新编写代码,不仅耗时耗力,还容易出错,并且未来的修改和维护也会变得异常复杂。幸运的是,安企CMS提供了强大的模板引擎,其中`macro`宏函数就是解决这一痛点的利器,它能帮助我们定义可复用的内容显示片段,从而大幅提高开发效率和模板的可维护性

2025-11-08

安企CMS支持哪些方式来调整网站的整体内容展示模式(自适应、代码适配、PC+手机独立站)?

安企CMS:灵活定制网站内容展示模式的三种选择 在搭建和运营网站时,如何让网站内容在不同设备上呈现**效果,是每个站长都需要考虑的重要问题。安企CMS深知这一点,因此提供了多种灵活的内容展示模式,让您可以根据实际需求,选择最适合自己的方式来打造网站。无论您是追求简洁高效,还是需要极致的定制化体验,安企CMS都能提供有力的支持。 接下来,我们将深入探讨安企CMS支持的三种网站内容展示模式

2025-11-08

如何利用安企CMS的灵活内容模型来定义不同类型内容的展示字段?

在数字内容日益丰富且多样化的今天,网站内容管理系统(CMS)的灵活性至关重要。安企CMS(AnQiCMS)深知这一点,其核心优势之一便是提供了强大的“灵活内容模型”功能,让用户能够根据不同的业务需求,为各类内容定制专属的展示字段。这不仅极大地提升了网站的适应性,也让内容运营变得更加高效和个性化。 想象一下,您的网站可能既发布普通的文章,又展示产品信息,甚至有活动报名、案例分享等多种类型的内容

2025-11-08

在多语言网站中,安企CMS如何确保不同语言内容的正确切换和显示?

在全球化日益深入的今天,网站内容能够触达不同语言的用户群体,已成为企业拓展市场、提升品牌影响力的关键。对于运营多语言网站的用户来说,最关心的问题之一莫过于:如何确保不同语言内容的正确切换和显示?安企CMS(AnQiCMS)在这方面提供了一套清晰且高效的解决方案,让我们一起来看看它具体是如何实现的。 ### 内容管理的核心:多站点与灵活内容模型 首先,安企CMS为多语言网站打下了坚实的基础

2025-11-08

如何通过伪静态规则优化URL结构,以改善内容在搜索引擎中的显示效果?

在运营网站时,我们都希望自己的内容能够被更多的用户看到,而搜索引擎无疑是重要的流量来源。要在搜索引擎中获得好的表现,除了内容本身的质量,网站的URL(网址)结构也扮演着至关重要的角色。一个清晰、友好的URL,不仅能让用户更容易理解和记忆,也能帮助搜索引擎更好地抓取和理解我们的内容。而伪静态规则,正是优化URL结构的有效手段,安企CMS(AnQiCMS)在这方面提供了非常便捷的功能。 ###

2025-11-08