如何在 AnQiCMS 模板中显示特定分类下的所有文章列表?

📅 👁️ 64

在 AnQiCMS 中构建网站时,我们经常需要让页面内容更加灵活,以满足不同版块的展示需求。其中一个非常普遍的需求,就是如何在模板中精确地显示某个特定分类下的所有文章列表。AnQiCMS 凭借其基于 Go 语言的高效架构和类似 Django 的模板引擎语法,让这项任务变得既直观又强大。

模板文件在 AnQiCMS 中通常以 .html 为后缀,存放在 /template 目录下。您会发现,变量通常使用双花括号 {{变量}} 来引用,而像条件判断、循环控制这样的逻辑标签则使用单花括号和百分号 {% 标签 %} 定义,并且需要有相应的结束标签。熟悉这些基本约定,将帮助您更流畅地理解和编写模板代码。

核心工具:archiveList 标签

要在 AnQiCMS 模板中显示特定分类下的文章列表,我们主要会用到一个功能强大的标签——archiveList。这个标签专门用于获取各类文档列表,无论是常规列表、相关文档,还是需要分页显示的内容。

1. 显示单个已知分类下的文章列表

如果您明确知道某个分类的 ID(例如,通过后台查看分类管理时,每个分类都有一个唯一的 ID),那么直接调用该分类下的文章列表会非常简单。

使用 archiveList 标签时,您可以指定 categoryId 参数来筛选文章。此外,考虑到 AnQiCMS 支持灵活的内容模型(如文章模型、产品模型等),您还需要通过 moduleId 参数来指定您想获取的是哪个模型下的文章。通常,文章模型对应的 moduleId 默认为 1,产品模型为 2

例如,要显示 ID 为 1 的文章分类下的所有文章:

{% archiveList articles with categoryId="1" moduleId="1" limit="10" %}
    <ul>
    {% for item in articles %}
        <li>
            <a href="{{item.Link}}">{{item.Title}}</a>
            <p>{{item.Description}}</p>
            <small>发布时间:{{stampToDate(item.CreatedTime, "2006-01-02")}} | 浏览量:{{item.Views}}</small>
        </li>
    {% empty %}
        <li>这个分类下暂时没有文章。</li>
    {% endfor %}
    </ul>
{% endarchiveList %}

在上面的代码中:

  • archiveList articles:我们将获取到的文章列表赋值给一个名为 articles 的变量。
  • categoryId="1":明确指定要获取分类 ID 为 1 的文章。
  • moduleId="1":指定获取文章模型下的内容。
  • limit="10":限制只显示最新的 10 篇文章。如果您想显示所有文章,可以省略此参数或设置一个足够大的数字。
  • {% for item in articles %}:这是一个循环标签,用于遍历 articles 变量中的每一篇文章。在循环体内,item 代表当前遍历到的文章对象。
  • {{item.Link}}{{item.Title}} 等:可以直接通过 item 对象访问文章的各项属性,例如链接、标题、描述、创建时间、浏览量等。
  • {{stampToDate(item.CreatedTime, "2006-01-02")}}:这是一个格式化时间戳的标签,可以将文章的创建时间戳转换为易读的日期格式。
  • {% empty %}:这是一个非常实用的功能,当 articles 列表为空时,empty 块内的内容会被显示出来,避免页面空白。

2. 结合分页功能显示文章列表

如果一个分类下的文章数量很多,我们通常需要进行分页显示。这时,只需要将 archiveList 标签的 type 参数设置为 "page",并结合 pagination 标签即可:

{% archiveList articles with categoryId="1" moduleId="1" type="page" limit="10" %}
    <ul>
    {% for item in articles %}
        <li>
            <a href="{{item.Link}}">{{item.Title}}</a>
            <p>{{item.Description}}</p>
            <small>发布时间:{{stampToDate(item.CreatedTime, "2006-01-02")}} | 浏览量:{{item.Views}}</small>
        </li>
    {% empty %}
        <li>这个分类下暂时没有文章。</li>
    {% endfor %}
    </ul>

    <div class="pagination-wrapper">
    {% pagination pages with show="5" %}
        {% if pages.PrevPage %}<a href="{{pages.PrevPage.Link}}">上一页</a>{% endif %}
        {% for p in pages.Pages %}
            <a class="{% if p.IsCurrent %}active{% endif %}" href="{{p.Link}}">{{p.Name}}</a>
        {% endfor %}
        {% if pages.NextPage %}<a href="{{pages.NextPage.Link}}">下一页</a>{% endif %}
    {% endpagination %}
    </div>
{% endarchiveList %}

这里,type="page" 告诉系统要准备分页数据,pagination pages with show="5" 则会生成分页链接,pages 变量包含了所有分页信息,您可以灵活展示首页、上一页、下一页以及中间的页码链接。

动态展示:遍历分类并显示其文章

在某些场景下,您可能希望在首页或其他聚合页面上,遍历显示多个分类,并在每个分类下展示对应的文章列表。这时,您需要结合 categoryList 标签来首先获取分类列表,然后在其内部嵌套 archiveList

假设我们希望显示文章模型下所有顶级分类,并在每个分类下显示 5 篇文章:

{% categoryList categories with moduleId="1" parentId="0" %}
    {% for category in categories %}
        <section class="category-block">
            <h3><a href="{{ category.Link }}">{{ category.Title }}</a></h3>
            <ul>
            {% archiveList articles_in_category with categoryId=category.Id moduleId="1" limit="5" %}
                {% for item in articles_in_category %}
                    <li>
                        <a href="{{item.Link}}">{{item.Title}}</a>
                        <small>({{stampToDate(item.CreatedTime, "2006-01-02")}})</small>
                    </li>
                {% empty %}
                    <li>暂无文章。</li>
                {% endfor %}
            {% endarchiveList %}
            </ul>
        </section>
    {% endfor %}
{% endcategoryList %}

在这段代码中:

  • {% categoryList categories with moduleId="1" parentId="0" %}:我们首先获取文章模型下所有 parentId0(即顶级分类)的分类,并将其赋值给 categories 变量。
  • {% for category in categories %}:外层循环遍历每个顶级分类。
  • categoryId=category.Id:这是关键一步!在内层的 archiveList 标签中,我们将外层循环中获取到的 category.Id 动态地作为 categoryId 参数传入,确保每个分类下只显示其自身的文章。
  • articles_in_category:为内层循环中的文章列表指定一个独立的变量名,以避免与外层或其他部分的变量冲突。

通过这种嵌套结构,您就能轻松实现更加动态和丰富的文章展示布局。

实用技巧与注意事项

  • 模板文件位置:AnQiCMS 的模板文件统一存放在 /template 目录下,每个模板集都有自己的独立文件夹。您编写的代码通常会放在这些模板文件内。
  • 变量名大小写:请注意,AnQiCMS 模板中的变量名是区分大小写的,例如 item.Titleitem.title 会被视为不同的变量。
  • moduleId 的选择:根据您网站的实际内容结构,正确选择 moduleId 至关重要。文章

相关文章

AnQiCMS 模板如何显示当前页面的面包屑导航路径?

在网站运营中,清晰的导航路径对于用户体验至关重要。面包屑导航(Breadcrumb Navigation)就像现实生活中的线索,它清晰地展示了用户在网站中的当前位置,让用户一目了然地知道自己身处何处,并能快速返回上一级或更高级别的页面。这不仅能帮助用户快速理解网站结构,提升用户体验,对于搜索引擎优化(SEO)也大有裨益,因为它能帮助搜索引擎更好地理解网站的层级结构。 AnQiCMS

2025-11-07

如何在 AnQiCMS 网站导航中创建支持二级下拉菜单的多级导航?

在网站运营中,清晰高效的导航系统是用户体验的关键,也是搜索引擎优化的重要一环。AnQiCMS 提供了灵活的导航设置功能,让网站管理者可以轻松创建和管理多级导航菜单,其中包括支持二级下拉菜单的功能。接下来,我们将一起了解如何在 AnQiCMS 中实现这一目标。 ### 第一步:在后台配置导航链接 首先,您需要登录 AnQiCMS 的后台管理界面,进入导航设置模块。 1.

2025-11-07

AnQiCMS 模板如何根据当前文章获取并显示相关文章列表?

在 AnQiCMS 模板中,如何智能地展示相关文章列表? 当我们发布一篇精彩的文章后,自然希望读者能继续在网站上浏览更多感兴趣的内容。这就涉及到在文章详情页底部展示“相关文章”列表的技巧了。一个优秀的相关文章推荐,不仅能有效延长用户在网站上的停留时间,提升用户体验,对网站的SEO优化和内容深度挖掘也大有裨益。安企CMS(AnQiCMS)深知这一点,并为此提供了非常简洁高效的模板标签

2025-11-07

如何在 AnQiCMS 文章详情页中显示上一篇和下一篇文章的标题和链接?

在AnQiCMS中管理网站内容,为用户提供流畅的浏览体验是内容运营的关键之一。当用户阅读完一篇精彩的文章后,往往会希望能够方便地跳转到相关或连续的内容,而文章详情页中的“上一篇”和“下一篇”导航正是满足这一需求的重要功能。AnQiCMS提供了简单而强大的模板标签,让您轻松地在文章详情页中实现这一功能。 ### 轻松实现

2025-11-07

AnQiCMS 如何获取并显示某个分类的详细信息,如分类标题、描述和缩略图?

在安企CMS中,获取并展示某个分类的详细信息是构建动态网站不可或缺的一部分,无论是用于创建分类列表、分类专题页,还是在文章详情页中展示所属分类的信息,安企CMS都提供了简洁而强大的模板标签来实现。 <h3>深入理解 `categoryDetail` 标签</h3> 安企CMS的模板系统采用了类似Django的语法,其中 `categoryDetail`

2025-11-07

如何在 AnQiCMS 模板中显示网站的所有单页面列表?

在网站运营中,我们经常需要创建一些独立的页面,比如“关于我们”、“联系方式”、“服务条款”或者一些专题介绍页面。这些页面通常被称为“单页面”,它们内容固定,不属于常规的文章或产品分类,但却是网站不可或缺的一部分。 当你的网站上积累了大量的单页面时,你可能会希望在一个特定的位置,例如网站底部、侧边栏,甚至是一个专门的页面上,集中展示这些单页面的列表,方便访客浏览和查找。AnQiCMS

2025-11-07

AnQiCMS 模板如何获取并显示某个单页面的详细内容和Banner图?

在安企CMS中,要获取并显示特定单页面的详细内容及其关联的Banner图,主要涉及理解单页面的管理方式和掌握模板标签的灵活运用。AnQiCMS 提供了直观的后台管理界面和强大的模板引擎,让这项工作变得简单高效。 ### 深入了解安企CMS中的单页面 安企CMS的“单页面”功能专为那些结构固定、内容相对独立、无需频繁更新的页面设计,例如“关于我们”、“联系方式”、“服务介绍”等。在后台

2025-11-07

如何在 AnQiCMS 网站中显示后台管理的友情链接列表?

在 AnQiCMS 网站中显示后台管理的友情链接列表,是一个非常实用的功能,它不仅有助于提升网站的 SEO 效果,也能为访问者提供更多有价值的外部资源。AnQiCMS 提供了一套简洁高效的机制来管理和展示这些链接,让即使是初次接触的用户也能轻松上手。 要实现友情链接的展示,我们主要分两步进行:首先,在 AnQiCMS 的后台管理系统中配置和维护友情链接;其次

2025-11-07