在我们的网站内容运营中,文章列表页往往承担着重要的展示职责。我们不希望仅仅按照发布时间机械地排列内容,而是希望能根据一些特定的条件,比如内容的重要性、热门程度或者是否被推荐,来灵活地筛选和展示文章。安企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}}来获取并显示它。
结合实际场景的应用
这种基于推荐属性的筛选能力在实际运营中非常有用:
- 网站首页: 可以设置“今日头条”、“编辑精选”、“幻灯片推荐”等多个模块,分别通过不同的
flag来展示对应的内容。 - 侧边栏/底部推荐: “热门文章”、“最新推荐”等区域,利用
flag和order(如按浏览量排序)参数,可以轻松实现动态的内容展示。 - 专题页面: 在制作专题时,你可以为专题内的特定文章打上专属的推荐属性,然后在专题页面中精准地调用这些精选内容。
通过安企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参数进行筛选和展示。例如,要筛选“产品模型”(