`tagList`和`tagDataList`标签如何显示网站所有标签及标签下的文档列表?

作为一位深谙安企CMS运作的网站运营者,我非常理解内容组织和用户体验在网站成功中的核心作用。标签(Tags)正是连接这两者的重要桥梁,它们不仅帮助我们有效地分类和管理海量内容,更引导用户快速发现感兴趣的信息。在安企CMS中,tagListtagDataList 这两个模板标签便是实现这一目标的关键工具,它们让我们能够灵活地在网站前端展示标签及标签下的关联文档。

全站标签的聚合展示:使用 tagList 标签

tagList 标签的主要作用是获取并展示网站上的标签列表。无论您的网站内容量有多大,tagList 都能帮助您将所有标签或特定条件的标签集合起来,形成一个清晰的索引或热门标签云,极大地提升了网站的导航性和内容的发现性。

要使用 tagList,您需要在模板中定义一个变量来接收标签数据,并配合 for 循环遍历这些标签。其基本使用方式如下:

{% tagList tags with limit="10" %}
    {% for item in tags %}
        <a href="{{item.Link}}">{{item.Title}}</a>
    {% endfor %}
{% endtagList %}

在上述示例中,tags 是我们定义的变量名,它将承载从 tagList 获取到的标签数据集合。limit="10" 参数表示我们希望获取最多10个标签。在 for 循环内部,item 变量代表了当前遍历到的每一个标签,我们可以通过 item.Link 获取标签的URL地址,通过 item.Title 获取标签的名称。这样,用户点击标签名称时,就会被导向到该标签的专属页面,查看与该标签相关的所有文档。

tagList 标签还支持一些实用的参数来满足更精细的筛选需求:

  • itemId:默认情况下,此参数会读取当前文档的ID来获取与该文档相关的标签。如果您希望显示所有标签,而不受当前文档限制,可以将其设置为 itemId="0"
  • limit:控制返回标签的数量。除了单个数字外,还支持 offset,count 模式,例如 limit="2,10" 表示从第2个标签开始,获取10个标签。
  • letter:根据标签的索引字母(A-Z)进行筛选。
  • categoryId:如果您希望仅显示与特定分类相关的标签,可以通过此参数指定分类ID,支持逗号分隔的多个ID。
  • siteId:在多站点管理环境下,用于指定获取哪个站点的数据。

值得注意的是,当您希望在一个独立的页面(如标签首页)展示所有标签,并支持分页功能时,tagList 同样可以配合 type="page" 参数和 pagination 标签在 tag/index.html 模板中实现。

特定标签下的文档列表:使用 tagDataList 标签

当用户点击一个标签后,通常会期望看到与该标签相关联的所有文档。tagDataList 标签正是为此设计,它能够根据指定的标签ID,获取并显示该标签下的文档列表,构建起标签与内容的直接关联。

tagDataList 的使用方式与 tagList 类似,同样需要一个变量来接收文档数据,并通过 for 循环进行渲染。其基本结构如下:

{% tagDataList archives with tagId="1" type="page" limit="10" %}
    {% for item in archives %}
        <div>
            <a href="{{item.Link}}">
                <h5>{{item.Title}}</h5>
                <p>{{item.Description}}</p>
                <span>发布时间:{{stampToDate(item.CreatedTime, "2006-01-02")}}</span>
                <span>阅读量:{{item.Views}}</span>
            </a>
        </div>
    {% empty %}
        <div>该标签下暂无文档。</div>
    {% endfor %}
{% endtagDataList %}

在这个示例中,archives 是我们用来存储文档列表的变量。tagId="1" 是核心参数,它告诉 tagDataList 我们想要获取ID为1的标签下的所有文档。如果 tagId 未指定,系统会自动尝试从当前标签页面(通常是 tag/list.html)的URL中解析出标签ID。type="page"limit="10" 参数组合使用,是为了实现文档列表的分页显示,每页显示10条文档。当没有任何文档符合条件时,{% empty %} 块中的内容将会被显示。

tagDataList 提供了丰富的参数来进一步控制文档的筛选和排序:

  • tagId:指定要获取文档的标签ID。这是此标签最关键的参数。
  • moduleId:如果您的文档属于不同的内容模型(如文章、产品),可以通过此参数指定要获取哪个模型下的文档。
  • order:定义文档的排序方式,例如 order="id desc"(按ID降序,即最新发布在前)或 order="views desc"(按浏览量降序)。
  • limit:控制返回文档的数量,同样支持 offset,count 模式。
  • type:可设置为 page(用于分页列表)或 list(用于固定数量列表)。
  • siteId:在多站点管理环境下,用于指定获取哪个站点的数据。

for 循环中,每个 item 变量包含了文档的各种详细信息,例如 item.Id (文档ID)、item.Title (文档标题)、item.Link (文档链接)、item.Description (文档描述)、item.Views (文档浏览量)、item.Thumb (缩略图)、item.CreatedTime (创建时间戳,可使用 stampToDate 格式化)。这些字段与 archiveList 标签返回的文档字段保持一致,提供了高度的灵活性来展示文档内容。

通常情况下,tagDataList 标签会用在 tag/list.html 模板文件中,该模板专门用于展示某个具体标签下的文档列表。通过与 pagination 标签的配合,可以轻松实现文档列表的分页功能,提升用户浏览大量内容时的体验。

标签与文档展示的协同效应

在实际的网站运营中,tagListtagDataList 常常协同工作,为用户提供流畅的标签导航体验。例如,在一个侧边栏或底部区域,我们可以使用 tagList 展示热门标签或所有标签的一个子集。当用户点击其中一个标签时,页面会跳转到该标签对应的 tag/list.html 页面。在这个页面中,tagDataList 便会发挥作用,根据URL中的标签ID,动态地加载并显示该标签下的所有相关文档。

这种机制不仅优化了网站的内部链接结构,对搜索引擎优化(SEO)也大有裨益。每个标签页面都成为了一个具有特定主题的内容集合页,有助于提升网站在相关关键词下的排名。通过高质量的内容和清晰的导航,我们可以有效地吸引和保留用户,让他们更容易地探索网站的丰富信息。


常见问题解答 (FAQ)

1. 如何在安企CMS后台创建和管理标签?

在安企CMS后台,您可以通过 内容管理 -> 文档标签 菜单进入标签管理页面。在这里,您可以添加新的标签,输入标签名称、索引字母、自定义URL、SEO标题、标签关键词和标签简介等信息。系统允许您为文档添加多个标签,标签不区分分类和模型,可以在不同内容模型和分类的文档之间共享。

2. 安企CMS的标签页面URL结构是否可以自定义?

是的,安企CMS支持伪静态规则自定义。您可以在 功能管理 -> 伪静态规则 中配置标签页面的URL结构。例如,您可以将标签首页设置为 /tags/tags-{page},将标签文档列表页设置为 /tag-{id}(-{page})/tag-{filename}(-{page}),甚至可以定义包含标签名称别名的更友好的URL。合理的URL结构不仅有助于SEO,也提高了用户对页面内容的直观感知。

3. 哪些模板文件会用到 tagListtagDataList 标签?

根据安企CMS的模板设计约定,tagList 标签通常用于网站的通用部分,例如首页侧边栏、文章详情页底部或全站标签云页面 (tag/index.html),用于展示标签集合。而 tagDataList 标签则专门用于展示特定标签下的文档列表页面 (tag/list.html)。这些预设的模板路径有助于保持网站结构的一致性和可维护性。