在内容管理系统中,如何有效地组织和呈现文章列表,是直接影响用户体验和网站信息架构的关键。AnQiCMS 提供了一套灵活且强大的模板标签,让我们可以根据分类ID和推荐属性,精细地筛选和排序文章,从而实现内容的精准投放和优化展示。
理解文章列表标签 archiveList
AnQiCMS 文章列表的显示,核心依赖于 archiveList 这个模板标签。它就像一个万能的内容查询器,能够根据我们传入的各种参数,从海量的文章中筛选出我们想要展示的内容。无论是首页的热门推荐,还是特定分类下的最新资讯,archiveList 都能轻松应对。
在使用时,我们通常会将查询结果赋值给一个变量,例如 archives,然后通过 for 循环遍历这些文章来显示它们。一个基础的调用可能看起来像这样:
{% archiveList archives with type="list" limit="10" %}
{% for item in archives %}
<a href="{{item.Link}}">{{item.Title}}</a>
{# 更多文章详情,如简介、发布时间等 #}
{% endfor %}
{% endarchiveList %}
这里 type="list" 表示获取固定数量的列表,而 limit="10" 则限制了显示的文章数量。
基于分类ID的精准筛选
网站内容通常会按照不同的主题进行分类,而 AnQiCMS 允许我们根据这些分类来筛选文章。这通过 categoryId 参数来实现。
指定单个分类: 如果您只想显示某个特定分类下的文章,只需将该分类的ID传递给
categoryId参数即可。例如,要显示ID为5的“公司新闻”分类下的文章:{% archiveList articlesByCategory with categoryId="5" limit="5" %} {% for article in articlesByCategory %} <h3><a href="{{article.Link}}">{{article.Title}}</a></h3> <p>{{article.Description}}</p> {% endfor %} {% endarchiveList %}同时显示多个分类: 如果需要从多个不相连的分类中获取文章,您可以用英文逗号
,将多个分类ID连接起来:{% archiveList mixedArticles with categoryId="1,3,7" limit="10" %} {% for article in mixedArticles %} <h4><a href="{{article.Link}}">{{article.Title}}</a></h4> {% endfor %} {% endarchiveList %}包含或排除子分类: 默认情况下,如果您在一个分类页面不指定
categoryId,archiveList会尝试自动读取当前页面的分类ID并显示其下的所有文章,包括其子分类的文章。- 如果您希望只显示当前分类的文章,而不包括任何子分类,可以明确设置
child="false":{% archiveList currentCategoryArticles with child="false" limit="8" %} {# 仅显示当前分类下的文章 #} {% endarchiveList %} - 如果需要排除某个或某些特定分类的文章,可以使用
excludeCategoryId参数:{% archiveList allButExcluded with excludeCategoryId="2,4" limit="10" %} {# 显示除分类ID 2和4之外的所有文章 #} {% endarchiveList %} - 如果您不希望
archiveList自动读取当前页面的分类ID,并想展示全站的文章(或者在其他页面不按分类筛选),可以设置categoryId="0"。
- 如果您希望只显示当前分类的文章,而不包括任何子分类,可以明确设置
利用推荐属性优化内容曝光
在网站运营中,我们经常需要对一些特别的文章进行“推荐”、“置顶”或“幻灯”等处理,以增加它们的曝光度。AnQiCMS 提供了“推荐属性”(flag)来管理这些特殊状态。
在后台编辑文章时,我们可以为文章勾选一个或多个推荐属性,例如“头条”、“推荐”、“幻灯”等。在模板中,通过 flag 参数,我们可以精确地调用带有这些属性的文章。
AnQiCMS 支持的推荐属性及其对应字母如下:
- h:头条文章
- c:推荐文章
- f:幻灯片文章
- a:特荐文章
- s:滚动文章
- p:图片文章
- j:跳转文章(通常用于外链,但也可以用作内部特殊标记)
需要注意的是,flag 参数一次只能指定一个推荐属性进行筛选。如果您想显示特定推荐文章,例如网站首页的“推荐”文章:
{% archiveList recommendedArticles with flag="c" limit="4" %}
{% for article in recommendedArticles %}
<div class="card">
<h4><a href="{{article.Link}}">{{article.Title}}</a></h4>
<p>{{article.Description|truncatechars:100}}</p>
</div>
{% endfor %}
{% endarchiveList %}
类似地,如果您想排除某些推荐属性的文章,可以使用 excludeFlag 参数。而 showFlag="true" 则可以在文章列表中直接显示该文章所带的推荐属性(例如,在标题旁显示一个“荐”字)。
灵活的排序机制,让内容更有序
内容的呈现顺序直接影响用户获取信息的效率。AnQiCMS 提供了多种排序方式,通过 order 参数来控制:
order="id desc":按照文章ID倒序排列,通常用于显示最新发布的文章。desc表示降序,asc表示升序。order="views desc":按照文章浏览量倒序排列,用于显示最热门或最受关注的文章。order="sort desc":这是 AnQiCMS 后台默认的自定义排序方式。运营人员可以在后台手动调整文章的优先级,数字越大,排序越靠前。如果您希望文章按照后台设定的顺序显示,这个参数非常有用。
例如,要显示最新发布的5篇文章:
{% archiveList latestArticles with order="id desc" limit="5" %}
{% for article in latestArticles %}
<li><a href="{{article.Link}}">{{article.Title}}</a> (发布时间: {{stampToDate(article.CreatedTime, "2006-01-02")}})</li>
{% endfor %}
{% endarchiveList %}
显示最热门的3篇文章:
{% archiveList hotArticles with order="views desc" limit="3" %}
{% for article in hotArticles %}
<p><a href="{{article.Link}}">{{article.Title}}</a> (浏览量: {{article.Views}})</p>
{% endfor %}
{% endarchiveList %}
综合运用:构建更智能的文章列表
AnQiCMS 的强大之处在于这些参数可以灵活组合,帮助我们构建出满足各种需求的文章列表。例如,我们想要在“产品动态”分类(假设ID为 10)下,显示所有“推荐”(c 属性)的产品新闻,并且按照浏览量从高到低排序,限制显示6条:
{% archiveList productNews with categoryId="10" flag="c" order="views desc" limit="6" %}
{% for item in productNews %}
<div class="news-item">
<h3><a href="{{item.Link}}">{{item.Title}}</a></h3>
<p>发布于:{{stampToDate(item.CreatedTime, "2006-01-02")}} | 浏览:{{item.Views}}</p>
<p>{{item.Description|truncatechars:120}}</p>
</div>
{% else %}
<p>当前分类下没有推荐的产品动态。</p>
{% endfor %}
{% endarchiveList %}
这样的组合运用,使得我们能够根据网站的实际运营策略,动态调整内容的呈现方式,无论是为了SEO、用户