在内容管理系统中,如何有效地组织和呈现文章列表,是直接影响用户体验和网站信息架构的关键。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 参数来实现。

  1. 指定单个分类: 如果您只想显示某个特定分类下的文章,只需将该分类的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 %}
    
  2. 同时显示多个分类: 如果需要从多个不相连的分类中获取文章,您可以用英文逗号 , 将多个分类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 %}
    
  3. 包含或排除子分类: 默认情况下,如果您在一个分类页面不指定 categoryIdarchiveList 会尝试自动读取当前页面的分类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、用户