当网站内容日益丰富时,一套清晰高效的分页导航系统对于提升用户体验至关重要。安企CMS(AnQiCMS)的模板系统提供了强大的pagination标签,让我们可以轻松构建出标准、美观的分页导航。接下来,我们将深入了解如何在模板中运用这个标签。

理解pagination标签的作用

pagination标签是安企CMS模板系统中专为分页功能设计的组件。它的主要任务是根据内容列表的数据生成一系列分页链接,方便用户在多页内容之间跳转。这个标签通常需要与那些支持分页功能的内容列表标签(例如archiveListtagDataList等)配合使用。当你的内容列表标签被设置为分页模式(即type="page")时,pagination标签就能获取到相应的分页数据,并将其渲染成导航链接。

pagination标签提供了两个主要参数,以便我们灵活控制分页导航的显示:

  • show:这个参数用来控制分页导航中可见的页码数量。例如,设置show="5",意味着在当前页码的前后会显示最多5个页码链接。当页码总数较多时,超出部分会被省略,使得分页导航条保持简洁,避免过长。
  • prefix:这是一个更高级的参数,用于重定义分页链接的URL模式。一般情况下,安企CMS会自动处理URL的生成,你通常不需要手动设置它。但如果你的网站有特殊需求,例如想在页码链接前添加自定义参数,就可以使用它。不过,请注意,prefix中必须包含{page}占位符,例如prefix="?page={page}"

pagination标签返回的数据结构

pagination标签会返回一个包含丰富分页信息的对象。在模板中,我们通常会给这个对象指定一个变量名(比如pages),然后通过这个变量来访问其属性。这个pages对象会包含以下关键信息:

  • TotalItems:表示所有内容记录的总数量。
  • TotalPages:表示内容总共分成了多少页。
  • CurrentPage:表示用户当前正在浏览的是第几页。
  • FirstPage:一个对象,包含首页的名称(Name,通常是“首页”或“1”)和链接(Link)。它还有一个IsCurrent属性,用于判断是否是当前页。
  • LastPage:一个对象,包含末页的名称(Name)和链接(Link),同样有IsCurrent属性。
  • PrevPage:一个对象,包含上一页的名称和链接。如果当前是第一页,则此对象可能不存在。
  • NextPage:一个对象,包含下一页的名称和链接。如果当前是最后一页,则此对象可能不存在。
  • Pages:这是一个数组,包含了中间页码的详细信息,需要通过for循环来遍历显示。
    • Pages数组中的每个元素(例如在循环中可命名为item)都包含以下字段:
      • Name:页码的显示名称(通常就是页码数字)。
      • Link:该页码对应的URL链接。
      • IsCurrent:一个布尔值,指示当前循环到的页码是否是用户当前正在访问的页面。这对于为当前页添加特殊样式(例如高亮)非常有用。

实际操作:构建标准分页导航

现在,让我们通过一个实际的例子,来构建一个标准的分页导航。假设我们正在为一个文章列表页面添加分页功能。

首先,确保你的内容列表标签(这里以archiveList为例)被设置为分页模式,并指定每页显示的数量。

”`twig

{% archiveList archives with type="page" limit="10" %}
    {% for item in archives %}
    <!-- 这里是每篇文章的显示内容,例如标题、简介等 -->
    <article class="article-item">
        <h3><a href="{{ item.Link }}">{{ item.Title }}</a></h3>
        <p>{{ item.Description }}</p>
        <div class="article-meta">
            <span>发布日期:{{ stampToDate(item.CreatedTime, "2006-01-02") }}</span>
            <span>阅读量:{{ item.Views }}</span>
        </div>
    </article>
    {% empty %}
    <p class="no-content">暂无文章可显示。</p>
    {% endfor %}
{% endarchiveList %}

{# 分页导航区域开始