如何在AnQiCMS中列出指定分类下的最新文章或产品?

在AnQiCMS中管理网站内容,经常需要根据不同的主题或版块展示相关信息。例如,您可能希望在首页的某个区域展示“公司新闻”分类下的最新文章,或者在产品页面侧边栏显示“热门新品”分类下的最新产品。AnQiCMS提供了灵活而强大的模板标签,让您可以轻松实现这些内容调用需求。

理解AnQiCMS的内容组织方式是高效利用其功能的关键。系统通过“内容模型”来区分不同类型的内容,比如文章模型和产品模型。每个内容模型下又可以创建多个“分类”,用于进一步细化内容归属。当您在AnQiCMS后台发布文章或产品时,都需要将其归属到特定的内容模型和分类之下。这种结构化的内容管理,为我们后续通过模板标签精准调用内容打下了基础。

要列出指定分类下的最新文章或产品,我们需要用到AnQiCMS的核心模板标签之一:archiveList。这个标签如同一个智能筛选器,能帮助我们从海量内容中提取出符合特定条件的数据。

archiveList 标签的核心参数解读

为了精准地调用指定分类下的最新内容,我们需要掌握 archiveList 标签的几个关键参数:

  1. moduleId:指定内容类型 这个参数用来告诉系统您想调用的是文章还是产品。AnQiCMS默认会有文章模型(通常ID为1)和产品模型(通常ID为2)。您可以在后台的“内容管理”->“内容模型”中查看每个模型的具体ID。例如,如果您要列出文章,就可以设置 moduleId="1";如果想展示产品,则设置为 moduleId="2"

  2. categoryId:精准定位分类 这是实现“指定分类”调用需求的核心参数。您需要提供目标分类的唯一ID。这个ID可以在AnQiCMS后台“内容管理”->“文档分类”中找到。点击某个分类进行编辑时,通常会在URL中或编辑界面的某个位置看到该分类的ID。例如,如果“公司新闻”分类的ID是10,那么您可以将参数设置为 categoryId="10"

  3. order:排序规则,确保“最新” 为了确保内容是“最新”的,您需要指定一个合适的排序方式。常用的两种选项是:

    • order="id desc":按照内容的ID降序排列,通常ID越大表示内容越新。
    • order="createdTime desc":按照内容的创建时间降序排列,这能最准确地反映内容的“新旧”。 您可以根据实际需求选择其一。
  4. limit:控制显示数量 这个参数用于限制一次性显示多少条内容。例如,如果您只想显示5条最新文章,可以设置 limit="5"

  5. type:列表展现形式 type 参数有两个主要值:

    • type="list":用于简单的内容列表展示,不会涉及分页。
    • type="page":当您希望内容列表支持分页时使用,需要配合 pagination 标签一起使用。

实战演练:获取指定分类下的最新文章或产品

假设我们想要在网站的某个区域显示“公司新闻”分类下的5篇最新文章。

第一步:确认分类ID和模型ID

  1. 登录AnQiCMS后台,进入“内容管理”->“内容模型”,确认“文章模型”的ID(假设为1)。
  2. 进入“内容管理”->“文档分类”,找到“公司新闻”分类,并记下它的ID(假设为10)。

第二步:编写模板代码

在您的AnQiCMS模板文件(例如首页的 index/index.html 或侧边栏的 partial/sidebar.html)中,您可以这样编写代码:

<div class="latest-news-section">
    <h2>公司新闻</h2>
    <ul>
        {# 使用 archiveList 标签调用指定分类下的最新文章 #}
        {# moduleId="1" 表示调用文章模型的内容 #}
        {# categoryId="10" 表示只调用ID为10的“公司新闻”分类下的内容 #}
        {# order="createdTime desc" 确保内容按发布时间降序排列,即最新内容在前 #}
        {# limit="5" 限制只显示最新的5篇文章 #}
        {% archiveList latestPosts with moduleId="1" categoryId="10" order="createdTime desc" limit="5" %}
            {% for item in latestPosts %}
                <li>
                    <a href="{{ item.Link }}" title="{{ item.Title }}">
                        {# 如果文章有缩略图,可以显示出来 #}
                        {% if item.Thumb %}
                            <img src="{{ item.Thumb }}" alt="{{ item.Title }}" class="news-thumb">
                        {% endif %}
                        <span class="news-title">{{ item.Title }}</span>
                        {# 格式化文章发布时间 #}
                        <span class="news-date">{{ stampToDate(item.CreatedTime, "2006-01-02") }}</span>
                    </a>
                </li>
            {% empty %}
                {# 当该分类下没有内容时,显示此提示 #}
                <li><p>该分类下暂无最新文章。</p></li>
            {% endfor %}
        {% endarchiveList %}
    </ul>
</div>

这段代码会遍历 archiveList 返回的最新文章列表。对于每一篇文章 (item),我们可以通过 item.Link 获取其链接,item.Title 获取标题,item.Thumb 获取缩略图,item.CreatedTime 获取发布时间