在安企CMS中,Tag(标签)功能是组织和关联内容,提升用户体验和网站SEO表现的重要工具。当您的网站内容日益丰富时,如何有效地展示指定Tag下的文档列表并提供清晰的分页导航,对于内容的易发现性和用户的持续浏览至关重要。

本文将为您详细讲解如何在AnqiCMS中,通过几个关键的模板标签,轻松实现这一功能。

一、 理解Tag标签及其在AnqiCMS中的作用

Tag标签,顾名思义,是对网站内容进行关键词或主题分类的一种方式。与传统分类(Category)不同的是,一篇文档可以同时拥有多个Tag,这使得内容之间的关联性更加灵活和丰富。例如,一篇关于“AnqiCMS模板制作”的文章,可以同时打上“AnqiCMS”、“模板制作”、“Go语言”等标签。

在AnqiCMS后台,您可以方便地在“内容管理”模块下的“文档标签”中进行管理。每个标签都可以设置独立的名称、描述和SEO信息,为网站带来更细致的流量入口。

二、 核心功能标签解析:实现Tag文档列表与分页

要在前端页面展示指定Tag下的文档列表并进行分页,我们需要用到以下几个AnqiCMS的核心模板标签:

  1. tagDetail 标签:获取当前Tag的详细信息

    • 作用: 用于获取当前页面所展示Tag的详细数据,例如标签名称、描述、链接等。
    • 使用场景: 通常在tag/list.html这类Tag列表页中使用,自动获取当前Tag的ID。
    • 常用参数:
      • name:指定要获取的字段名称,如Title(标签标题)、Description(标签描述)、Link(标签链接)等。
      • idtoken:如果您想在非Tag列表页指定获取某个Tag的详情,可以使用其ID或URL别名。
    • 范例:
      
      {% tagDetail currentTag %} {# 将当前Tag的完整信息赋值给currentTag变量 #}
      <h1>标签:{{ currentTag.Title }}</h1>
      <p>描述:{{ currentTag.Description }}</p>
      
  2. tagDataList 标签:获取指定Tag下的文档列表

    • 作用: 这是显示Tag下文档的核心标签,它能根据指定的Tag,检索并列出所有关联的文档。
    • 使用场景: 在Tag列表页面(如tag/list.html)用来展示该Tag下的所有文档。
    • 常用参数:
      • tagId:指定要获取文档列表的Tag ID。在tag/list.html页面,此参数通常可以省略,系统会自动读取当前Tag的ID。
      • moduleId:如果您的Tag关联了不同内容模型(如文章、产品),可以通过此参数指定要获取哪个模型下的文档列表。
      • type重要! 当您需要分页功能时,务必设置为 "page"。若只显示固定数量,则为"list"
      • limit:每页(或每次调用)显示多少条文档。
      • order:排序规则,如"id desc"(按ID倒序)、"views desc"(按浏览量倒序)。
    • 范例:
      
      {% tagDataList archives with type="page" limit="10" %} {# 获取当前Tag下,每页10条的文档列表,并赋值给archives变量 #}
          {% for item in archives %}
              {# 文档内容展示 #}
          {% endfor %}
      {% endtagDataList %}
      
  3. pagination 标签:生成分页导航

    • 作用:tagDataList(或其他列表标签,如archiveList)使用type="page"模式后,pagination标签能够自动根据当前页面的文档总数和每页显示数量,生成完整的分页导航链接。
    • 使用场景: 紧跟在tagDataList(或archiveList)标签之后,用于生成分页HTML。
    • 常用参数:
      • show:控制分页导航中显示多少个页码链接(不包括首页、上一页、下一页等)。
    • 范例:
      
      {% pagination pages with show="5" %}
          {# ... 分页链接的HTML结构 ... #}
      {% endpagination %}
      

三、 实战:构建Tag标签下的文档列表页

根据AnqiCMS的模板约定,展示特定Tag标签下文档列表的模板文件通常位于您当前使用模板目录下的 tag/list.html。如果您还没有这个文件,请创建它。

以下是一个完整的tag/list.html模板代码示例,它将展示当前Tag的名称和描述,以及该Tag下的文档列表,并提供分页功能:

”`twig {# 继承基础模板,如 base.html #} {% extends ‘base.html’ %}

{# 设置页面TDK信息,AnqiCMS会自动填充Tag的TDK #} {% block title %}{% tdk with name=“Title” siteName=true %}{% endblock %} {% block keywords %}{% tdk with name=“Keywords” %}{% endblock %} {% block description %}{% tdk with name=“Description” %}{% endblock %}

{% block content %}

{# 面包屑导航 #}
{% breadcrumb crumbs with index="首页" %}
<ol class="breadcrumb">
    {% for item in crumbs %}
    <li{% if item.IsCurrent %} class="active"{% endif %}>
        {% if item.IsCurrent %}{{item.Name}}{% else %}<a href="{{item.Link}}">{{item.Name}}</a>{% endif %}
    </li>
    {% endfor %}
</ol>
{% endbreadcrumb %}

{# 获取当前Tag的详细信息 #}
{% tagDetail tag %}
<h1 class="page-title">{{ tag.Title }}</h1>
{% if tag.Description %}
<p class="tag-description">{{ tag.Description }}</p>
{% endif %}

{# 获取该Tag下的文档列表,并支持分页 #}
{% tagDataList archives with type="page" limit="10" order="id desc" %}
<div class="document-list">
    {% for item in archives