AnQiCMS如何将字符串按指定分隔符拆分成数组并在模板中遍历显示?

📅 👁️ 84

在网站运营和内容管理中,我们经常会遇到这样的场景:后台某个字段存储了多个相关信息,比如一篇文章的多个关键词、一个产品的多种功能标签,或者某个作者的多个别名。这些信息通常以逗号、分号或其他特定符号连接成一个字符串。当需要在网站前端模板中将这些信息逐一展示或进行样式处理时,就需要将这个字符串拆分成独立的项,然后逐个遍历显示。

AnQiCMS 提供了强大且灵活的模板引擎,其语法风格类似于 Django,允许我们使用过滤器(Filters)对数据进行处理,并通过循环标签(for 循环)来遍历和显示这些处理后的数据。

AnQiCMS 模板语言基础

AnQiCMS 的模板系统旨在简化内容展示的开发过程。它通过以下几个核心概念,让数据处理变得直观:

  1. 变量输出: 使用双花括号 {{ 变量名 }} 来显示后台传递到模板的数据。
  2. 标签(Tags): 使用单花括号和百分号 {% 标签名 %} 来执行逻辑控制,例如条件判断(if)、循环(for)等。
  3. 过滤器(Filters): 使用竖线 | 符号,将变量的值传递给一个函数进行处理。过滤器可以改变数据的格式、内容或结构。这是我们实现字符串拆分的关键。

核心功能:字符串拆分成数组

AnQiCMS 提供了几个实用的过滤器,可以将字符串按不同规则拆分成数组(Go 语言中的 slice),以便于在模板中进一步处理。

1. split 过滤器:按指定分隔符拆分

这是最常用的方法,可以根据你自定义的任何分隔符将字符串拆分成数组。

  • 用法: {{ 字符串变量 | split:"分隔符" }}
  • 示例: 假设你的 archive.Keywords 字段存储了 “SEO优化,内容营销,网站运营” 这样一个字符串,你想用逗号 , 将它拆开。
    
    {% set keyword_string = archive.Keywords %}
    {% set keyword_array = keyword_string|split:"," %}
    {# 此时 keyword_array 就是一个包含 ["SEO优化", "内容营销", "网站运营"] 的数组 #}
    
    如果字符串中不包含指定的分隔符,split 过滤器会返回一个只包含原始字符串的单元素数组。例如,如果 keyword_string 是 “SEO优化”,那么 keyword_string|split:"," 将返回 ["SEO优化"]。 如果分隔符是一个空字符串 ""split 过滤器会将原字符串的每个字符都拆分成数组的一个元素。

2. make_list 过滤器:按字符拆分

当你需要将一个字符串中的每个字符(包括中文、英文、数字等)都拆分成数组中的一个独立元素时,make_list 过滤器会非常方便。

  • 用法: {{ 字符串变量 | make_list }}
  • 示例: 如果你需要处理 “你好世界” 这样的字符串,并希望每个汉字都是一个独立的元素。
    
    {% set greeting_string = "你好世界" %}
    {% set char_array = greeting_string|make_list %}
    {# 此时 char_array 就是一个包含 ["你", "好", "世", "界"] 的数组 #}
    

3. fields 过滤器:按空格拆分

这个过滤器专门用于将字符串按照空格(包括连续空格)拆分成数组。

  • 用法: {{ 字符串变量 | fields }}
  • 示例: 如果你的字符串是 “AnQiCMS is a GoLang CMS”,你想按空格拆分。
    
    {% set phrase_string = "AnQiCMS is a GoLang CMS" %}
    {% set word_array = phrase_string|fields %}
    {# 此时 word_array 就是一个包含 ["AnQiCMS", "is", "a", "GoLang", "CMS"] 的数组 #}
    

在模板中遍历并显示数组

一旦我们将字符串拆分成了数组,就可以使用 AnQiCMS 模板引擎中的 for 循环标签来遍历并显示数组中的每一个元素。

  • 用法:
    
    {% for item in 数组变量 %}
        {# 在这里处理每个 item #}
    {% empty %}
        {# 如果数组为空,则显示这里的内容 #}
    {% endfor %}
    
  • 循环变量:for 循环内部,你可以通过 item 变量(或其他你自定义的变量名)访问当前遍历到的数组元素。此外,模板引擎还提供了一些特殊的循环状态变量,例如:
    • forloop.Counter: 当前循环的次数(从 1 开始)。
    • forloop.Revcounter: 剩余循环的次数。

综合示例:显示文章关键词列表

我们来看一个实际的例子,假设文章详情页的 archive.Keywords 字段存储了以逗号分隔的关键词。我们希望在页面底部以标签形式显示这些关键词,并且每个关键词都是一个可点击的链接。

{# 假设 archive.Keywords 的值是 "SEO优化,内容营销,网站运营" #}
{% if archive.Keywords %}
    <div class="article-keywords">
        <strong>关键词:</strong>
        {% set keyword_array = archive.Keywords|split:"," %}
        {% for keyword in keyword_array %}
            <a href="/tags/{{ keyword|urlencode }}" class="tag-item">{{ keyword|trim }}</a>
        {% empty %}
            <span>暂无关键词</span>
        {% endfor %}
    </div>
{% endif %}

代码解释:

  1. {% if archive.Keywords %}:首先判断 archive.Keywords 字段是否有值,避免在没有关键词时显示空区域。
  2. {% set keyword_array = archive.Keywords|split:"," %}:使用 set 标签将 archive.Keywords 字符串通过 , 拆分后赋值给一个名为 keyword_array 的新变量。这是**实践,因为它将数据处理和循环逻辑分开,使代码更清晰。
  3. {% for keyword in keyword_array %}:遍历 keyword_array 数组,每次循环将当前元素赋值给 keyword 变量。
  4. <a href="/tags/{{ keyword|urlencode }}" class="tag-item">{{ keyword|trim }}</a>
    • keyword|urlencode:将关键词进行 URL 编码,以防关键词中含有特殊字符导致链接失效。
    • keyword|trim:移除关键词前后可能存在的空格,确保显示整洁。
    • class="tag-item":可以为每个关键词应用自定义的 CSS 样式。
  5. {% empty %}<span>暂无关键词</span>{% endfor %}:如果 keyword_array 数组为空(即 archive.Keywords 为空字符串或经过拆分后仍为空),则显示 “暂无关键词”。

通过这样的组合使用,我们就能轻松地将后台存储的结构化字符串数据,以美观且功能性的方式呈现在网站前端。

总结

AnQiCMS 的模板引擎提供了灵活的过滤器和循环

相关文章

如何在AnQiCMS模板中进行简单的数学算术运算来显示结果?

在AnQiCMS的模板中处理数字运算,是实现网站数据动态化和个性化展示的重要一环。无论您需要计算商品总价、展示折扣信息、或者根据某些数值进行条件判断,AnQiCMS强大的模板引擎都能提供灵活的支持。得益于其类Django模板引擎的特性,进行简单的数学算术运算可以直接在模板中完成,无需复杂的代码逻辑。 ### 直接在模板中进行表达式计算 AnQiCMS的模板引擎支持在双大括号 `{{ }}`

2025-11-08

AnQiCMS如何将时间戳格式化为“年-月-日”的显示格式?

在日常的网站运营中,日期的展示形式对用户体验至关重要。一个清晰、一致且易于理解的日期格式,能够让访客更方便地获取信息,提升网站的专业度。对于安企CMS(AnQiCMS)的用户来说,我们经常会遇到内容发布时间、更新时间等以时间戳形式存储的数据,而如何将这些长串数字转化为“年-月-日”这样友好的显示格式,是内容呈现上不可或缺的一环。 安企CMS作为一款高效的内容管理系统

2025-11-08

如何在AnQiCMS模板中安全地截取字符串或HTML内容并添加省略号?

在运营网站时,我们常常需要展示文章简介、产品描述或用户评论等内容。这些文本如果未经处理,直接完整显示,过长的文本可能会打乱页面布局,影响整体美观和信息传递效率。这时,对内容进行适当的截取并添加省略号,就显得尤为重要。 AnQiCMS 作为一个高效、可定制的内容管理系统,其基于 Go 语言开发的强大模板引擎,为我们提供了简单而智能的解决方案。通过内置的过滤器(filters)

2025-11-08

AnQiCMS如何调试模板时查看变量的结构类型和值(使用dump过滤器)?

在进行网站模板开发时,我们经常会遇到这样的困惑:模板中一个变量究竟包含了哪些数据?它的结构是怎样的?类型是什么?具体的值又是多少?这些问题如果不能迅速得到答案,调试过程就会变得异常繁琐和耗时。好在AnQiCMS为我们提供了一个强大而便捷的调试工具——`dump`过滤器,它可以帮助我们轻松揭示变量的“庐山真面目”。 AnQiCMS基于Go语言开发,采用了类似Django的模板引擎语法

2025-11-08

如何在AnQiCMS模板中移除字符串中的特定字符或空格?

在网站内容管理中,字符串的处理是不可避免且至关重要的一环。无论是为了页面美观,保持数据输出的规范性,还是为了SEO优化,我们经常需要对文本内容进行精细的调整,例如移除多余的空格、标点符号或是其他特定字符。AnQiCMS 提供了灵活且强大的模板引擎,让我们能够轻松地在前端模板中实现这些字符串操作。 理解 AnQiCMS 模板中的过滤器是实现这些操作的关键

2025-11-08

AnQiCMS如何判断一个字符串或数组是否包含某个关键词并据此显示内容?

在网站运营中,我们常常需要根据内容的特定属性或关键词来动态调整页面的显示。例如,当文章标题包含“最新”二字时,我们可能想给它加上一个醒目的“NEW”标签;或者当某个产品描述中提及“包邮”时,自动显示一个免运费的图标。安企CMS(AnQiCMS)提供了强大的模板功能和丰富的过滤器,让实现这些需求变得轻而易举。 本文将深入探讨AnQiCMS如何通过判断字符串或数组是否包含某个关键词

2025-11-08

AnQiCMS如何处理图片资源管理并优化

在日常的网站运营中,图片不仅是内容的重要组成部分,更是影响网站性能和用户体验的关键因素。高效的图片资源管理与优化,能够显著提升网站的加载速度,改善搜索引擎排名,并有效保护原创内容的版权。AnQiCMS作为一款为内容运营而生的系统,在图片处理方面提供了全面且实用的功能,帮助我们轻松应对这些挑战。 ### 一、全面的图片资源集中管理 AnQiCMS为图片资源提供了一个集中化的管理平台

2025-11-08

如何利用AnQiCMS模板标签精准控制文章详情页的显示内容?

网站运营中,文章详情页是用户与内容深度互动、了解产品或服务的关键环节。一个设计精良、信息呈现精准的详情页,不仅能显著提升用户体验,还能有效助力SEO优化。在安企CMS(AnQiCMS)这样灵活高效的内容管理系统中,我们可以通过巧妙运用其模板标签,实现对文章详情页内容的精细化控制。 AnQiCMS基于Go语言开发,以其简洁高效的架构,提供了类似Django模板引擎的强大功能

2025-11-08