在 AnQiCMS 的模板开发中,我们常常需要将从数据库中获取到的一组数据,比如文章的多个标签(Tags),以一种用户友好的方式展示出来,而不是简单地罗列。最常见的需求之一,就是将这些标签拼接成一个带有自定义分隔符的字符串,例如“标签A, 标签B, 标签C”或者“标签A | 标签B | 标签C”。AnQiCMS 强大的模板引擎提供了灵活的方式来实现这一目标。

理解 AnQiCMS 模板中的数据结构

AnQiCMS 的模板采用了类似 Django 的语法,其核心优势在于能够方便地从后端获取数据并在前端渲染。当我们使用像 tagList 这样的标签来获取文档的标签时,它返回的通常是一个包含多个“标签对象”的数组或切片。每一个“标签对象”本身可能包含 Title(标签名称)、Link(标签链接)等多个字段。

例如,通过 {% tagList tags %} 这样的标签,我们获取到的 tags 变量并不是一个简单的字符串数组,而是一个由多个像 Tag 这样的结构体组成的数组。如果我们直接尝试对其进行某些操作,可能得不到我们想要的结果。

为了清晰地展示这一点,通常我们会在模板中使用 for 循环来遍历这些标签,像这样:

{# 假设我们正在一个文档详情页,获取当前文档的标签 #}
{% tagList tags with itemId=archive.Id limit="10" %}
    {% for item in tags %}
        <a href="{{item.Link}}">{{item.Title}}</a>
    {% endfor %}
{% endtagList %}

这段代码会分别输出每个标签的链接和标题,但它们是分散的 HTML 元素。我们的目标是将 {{item.Title}} 这些字符串连接起来。

使用 join 过滤器实现