安企CMS如何显示指定分类下的文档列表并进行分页?

安企CMS(AnQiCMS)以其灵活的模板机制和强大的内容管理功能,让网站内容的展示变得非常简单高效。对于许多网站来说,将内容按分类清晰地展示,并提供便捷的分页导航,是提升用户体验和优化搜索引擎排名的关键。接下来,我们一起了解如何在安企CMS中轻松实现指定分类下的文档列表显示和分页功能。

灵活配置,掌控内容展示

安企CMS的模板系统采用了类似Django模板引擎的语法,让内容的调用直观而强大。要显示指定分类下的文档列表并进行分页,主要会用到几个核心的模板标签:archiveList 用于获取文档列表数据,categoryDetail 用于获取当前分类的详细信息,以及 pagination 用于生成分页导航。它们协同工作,让动态内容的展示和浏览变得轻而易举。

首先,我们需要在当前主题的模板文件夹中找到或创建对应的分类列表模板文件。通常,这些文件会位于 /template/{你的模板名称}/{内容模型表名}/list.html,例如,如果是文章列表,可能会是 article/list.html。如果你想为某个特定分类设置独特的布局,也可以创建 list-{分类ID}.html 这样的命名格式,例如 article/list-10.html,系统会自动识别并应用。

在列表页模板中,我们首先需要获取当前分类的一些基本信息,比如分类名称和描述,这对于页面的SEO和用户理解都非常重要。可以使用 categoryDetail 标签来完成这个任务:

{# 获取当前分类的详细信息,用于页面标题、描述等 #}
<h1 class="category-title">{% categoryDetail with name="Title" %}</h1>
<p class="category-description">{% categoryDetail with name="Description" %}</p>

这段代码会直接输出当前页面的分类标题和描述,无需指定ID,系统会自动检测。如果需要获取特定ID的分类信息,也可以通过 id="你的分类ID" 参数来指定。

动态获取文档列表

接下来是核心部分——获取指定分类下的文档列表。安企CMS提供了 archiveList 标签,它允许你根据多种条件筛选文档。为了实现分页功能,我们需要将 type 参数设置为 "page"

假设我们要在分类页面展示每页10篇文章,模板代码可以这样编写:

<div class="document-list">
    {# 使用 archiveList 标签获取指定分类下的文档列表,并开启分页功能 #}
    {# categoryId="0" 表示不指定分类ID,系统会自动获取当前页面的分类ID #}
    {# type="page" 开启分页,limit="10" 设置每页显示10条文档 #}
    {% archiveList archives with type="page" limit="10" %}
        {% for item in archives %}
        <article class="document-item">
            {# 检查文档是否有缩略图,并显示 #}
            {% if item.Thumb %}
            <a href="{{item.Link}}" class="document-thumb">
                <img src="{{item.Thumb}}" alt="{{item.Title}}">
            </a>
            {% endif %}
            <div class="document-info">
                <h2 class="document-title"><a href="{{item.Link}}">{{item.Title}}</a></h2>
                <p class="document-description">{{item.Description}}</p>
                <div class="document-meta">
                    {# 使用 stampToDate 格式化发布日期 #}
                    <span>发布日期: {{stampToDate(item.CreatedTime, "2006-01-02")}}</span>
                    <span>浏览量: {{item.Views}}</span>
                </div>
            </div>
        </article>
        {% empty %}
        {# 如果当前分类下没有文档,显示提示信息 #}
        <p class="no-content">当前分类下暂无文档。</p>
        {% endfor %}
    {% endarchiveList %}
</div>

在这个 archiveList 标签中:

  • archives 是我们定义的一个变量名,它将包含获取到的文档列表数据。
  • type="page" 告诉系统我们需要分页模式的列表,这样 pagination 标签才能正确工作。
  • limit="10" 则指定了每页显示10条文档。
  • categoryId="0" 这里是一个小技巧,它表示我们不需要明确指定分类ID,系统会智能地根据当前页面的URL自动识别分类。当然,你也可以根据需要手动指定一个或多个分类ID,例如 categoryId="1,2,3"
  • {% for item in archives %} 循环遍历文档列表,item 变量包含了每篇文档的详细信息,例如 item.Title(标题)、item.Link(链接)、item.Description(简介)、item.Thumb(缩略图)、item.CreatedTime(发布时间)和 item.Views(浏览量)等。
  • {% empty %}for 循环的一个实用功能,当 archives 列表为空时,会显示 {% empty %}{% endfor %} 之间的内容,避免页面空白。
  • stampToDate 过滤器用于将时间戳格式化成可读的日期字符串,"2006-01-02" 是Go语言特有的日期格式化参考值。

构建优雅的分页导航

有了文档列表,我们还需要为用户提供方便的分页导航。pagination 标签是实现这一功能的利器,它会自动生成“首页”、“上一页”、“下一页”以及中间页码的链接。

将以下代码添加到 archiveList 标签之后,就可以看到分页导航了:

”`twig