如何将AnQiCMS后台配置的一个逗号分隔的关键词字符串,拆分成可遍历的关键词列表?

📅 👁️ 70

在安企CMS(AnQiCMS)的日常内容运营中,我们经常需要在文章或产品详情页展示相关的关键词。这些关键词不仅有助于搜索引擎理解页面内容,也能引导用户发现更多相关信息。通常情况下,我们会在后台的一个文本框中输入这些关键词,并使用逗号进行分隔,例如:“网站运营,SEO优化,内容营销”。

然而,当我们希望在前端页面上,将这些关键词作为独立的、可点击的标签或者以更美观的卡片形式展示时,直接获取到的“网站运营,SEO优化,内容营销”这样的字符串是无法直接遍历的。这就需要我们对这个字符串进行“加工”,将其拆分成一个独立的关键词列表。

安企CMS强大的模板引擎和内置过滤器,让这项任务变得异常简单和高效。接下来,我们将一步步地探讨如何将后台配置的逗号分隔关键词字符串,巧妙地转化为前端模板中可灵活操作的关键词列表。

后台关键词的录入与前端获取

在安企CMS的后台编辑界面,例如添加或编辑文档时,我们会在“文档关键词”字段中填写相关词汇。根据系统的提示,多个关键词之间使用英文逗号 , 进行分隔。这个设计非常符合内容编辑的习惯,也便于后台管理。

当内容发布后,在前端模板中,我们可以通过 {{archive.Keywords}}(针对文档详情页)或者在循环中通过 {{item.Keywords}}(针对文档列表)来获取到这些关键词字符串。此时,获取到的就是一整串文本,比如“网站运营, SEO优化, 内容营销”。

解决之道:利用 split 过滤器

要将这串关键词文本拆分成独立的列表项,安企CMS模板引擎提供了一个名为 split 的强大过滤器。顾名思义,split 过滤器能够根据指定的分隔符,将一个字符串切割成一个数组(或称作列表)。

核心思路:

  1. 获取后台设置的关键词字符串。
  2. 使用 split 过滤器,以逗号和可能存在的空格作为分隔符,将字符串拆分为多个独立的关键词。
  3. 通过 for 循环遍历这个新生成的关键词列表,逐一展示每个关键词。

实战演练:一步步实现关键词列表

假设我们正在编辑一个文章详情页的模板,并希望在文章底部展示相关的关键词标签。

第一步:获取关键词字符串

首先,在您的模板文件(例如 archive/detail.html)中,获取当前文章的关键词字符串。为了方便后续操作,我们可以使用 {% set %} 标签将其存储在一个变量中:

{% set raw_keywords = archive.Keywords %}

这里,raw_keywords 将会包含类似 “网站运营, SEO优化, 内容营销” 这样的字符串。

第二步:使用 split 过滤器进行拆分

接下来,我们将使用 split 过滤器对 raw_keywords 变量进行处理。由于用户在后台输入关键词时,习惯上可能会在逗号后面添加一个空格,因此,为了确保拆分结果的准确性,建议使用 ,(逗号后加一个空格)作为分隔符。如果确定用户只用逗号分隔,也可以只使用 ,

{% if raw_keywords %} {# 确保关键词不为空 #}
    {% set keyword_list = raw_keywords|split:", " %}
    {# 此时,keyword_list 将是一个包含 ["网站运营", "SEO优化", "内容营销"] 的数组 #}
{% endif %}

通过这行代码,keyword_list 现在已经是一个包含了三个独立字符串元素的数组了。

第三步:遍历并展示关键词列表

有了 keyword_list 数组,我们就可以使用 {% for %} 循环来遍历它,并为每个关键词生成我们想要的HTML结构,例如显示为带有边框和背景色的标签:

{% if keyword_list %}
    <div class="article-keywords">
        <span class="keywords-label">相关关键词:</span>
        {% for keyword in keyword_list %}
            {# 对每个关键词再次使用 `trim` 过滤器,去除可能存在的额外首尾空格,确保显示整洁 #}
            <a href="/search?q={{ keyword|trim }}" class="keyword-item">{{ keyword|trim }}</a>
        {% endfor %}
    </div>
{% endif %}

在这个例子中,我们为每个关键词添加了一个简单的CSS类 keyword-item,方便进行样式美化。同时,为了提升用户体验和SEO,我们将每个关键词包装成一个 <a> 标签,并将其 href 属性指向一个搜索页,以便用户点击后能搜索到更多相关内容。|trim 过滤器的使用,也进一步保证了关键词显示时的整洁性,避免因为后台录入时的额外空格导致显示异常。

拓展应用与技巧

  • 样式美化: 您可以通过CSS为 article-keywordskeyword-item 类添加样式,如背景色、边框、圆角、字体大小等,使关键词标签更加醒目和美观。
  • 空关键词处理: 在上面的例子中,我们通过 {% if raw_keywords %}{% if keyword_list %} 进行了两次判断,确保只有当存在关键词时才渲染相关HTML,避免页面出现不必要的空标签。
  • 限制显示数量: 如果关键词过多,您可能希望只显示前几个。可以使用 slice 过滤器来截取数组的一部分:
    
    {% set limited_keywords = keyword_list|slice:":5" %} {# 只显示前5个关键词 #}
    {% for keyword in limited_keywords %}
        <a href="/search?q={{ keyword|trim }}" class="keyword-item">{{ keyword|trim }}</a>
    {% endfor %}
    

通过 split 过滤器的灵活运用,安企CMS的用户可以轻松地将后台的纯文本关键词转化为前端页面上具有更强互动性和视觉吸引力的元素,极大地丰富了网站的内容展示形式,也为SEO和用户体验带来了积极的提升。


常见问题(FAQ)

Q1: 如果我的关键词之间没有用逗号和空格分隔,而是只用了逗号,split:", " 还能正确拆分吗?

A1: 如果您的关键词之间仅用逗号 , 分隔,例如 “网站运营,SEO优化,内容营销”,那么使用 split:", " 可能无法正确拆分,因为它期望逗号后有一个空格。在这种情况下,您应该将分隔符改为 split:","。为了最大限度地兼容,您可以在拆分后,对每个关键词再使用 |trim 过滤器,这样可以去除关键词本身可能存在的首尾空格。

Q2: 我只想显示关键词列表中的前几个关键词,如何实现?

A2: 您可以使用 slice 过滤器来截取关键词列表。例如,如果您想显示前5个关键词,可以在 keyword_list 变量上应用 |slice:":5"。完整的代码可能是这样: {% set limited_keywords = keyword_list|slice:":5" %} 然后您就可以遍历 limited_keywords 来展示前5个关键词了。

Q3: 如何将这些拆分出来的关键词变成可点击的链接,并跳转到安企CMS自带的标签页或关键词库搜索页?

A3: 直接通过 split 过滤器拆分出来的关键词是纯文本。如果您希望它们链接到安企CMS的官方标签页或关键词搜索结果,建议使用 tagList 标签获取与当前文章关联的官方标签列表,因为 tagList 返回的每个标签对象都包含可以直接使用的 Link 属性。例如:

{% tagList tags with itemId=archive.Id limit="10" %}
    {% for tag_item in tags %}
        <a href="{{tag_item.Link}}" class="keyword-item">{{tag_item.Title}}</a>
    {% endfor %}
{% endtagList %}

这种方式可以确保链接的有效性和正确

相关文章

如何利用`slice`过滤器从长URL中提取特定部分的参数或路径?

在安企CMS的模板世界里,灵活处理数据是提升网站用户体验和SEO表现的关键。有时,我们需要从一个较长的URL中提取特定部分,比如路径参数、产品ID,或者仅仅是显示URL的一部分以保持页面简洁。这时,`slice`过滤器便是一个极其有用的工具,它能帮助我们精确地截取字符串或数组中的任意片段。 ### 理解`slice`过滤器的工作原理 `slice`过滤器允许我们从一个字符串或数组中

2025-11-07

`slice`过滤器支持负数索引来从末尾开始截取吗?

在安企CMS的模板开发中,我们经常需要对字符串或数据列表进行灵活的截取和展示,只呈现其中的一部分。`slice`过滤器正是为此目的而生,它允许我们精确控制内容的长度。而对于`slice`过滤器是否支持负数索引,也就是能否从末尾开始截取,答案是肯定的,并且这一特性大大增强了我们在处理动态内容时的模板灵活性和便捷性。 ### `slice`过滤器的基本用法回顾 首先

2025-11-07

`slice`过滤器在截取中文字符串时,如何确保截取结果的完整性(避免半个字符)?

在安企CMS的模板开发中,`slice`过滤器是我们处理字符串和数组的常用工具。它能够帮助我们方便地截取内容的一部分,无论是列表的某几个元素,还是长文本中的指定片段。然而,当涉及到中文字符串的截取时,如果不了解其底层的工作原理,我们可能会遇到一个常见且令人头疼的问题:截取结果中出现“半个字符”或乱码。 ###

2025-11-07

在AnQiCMS模板中,如何精确截取一个数组(slice)中指定范围的元素?

在安企CMS的模板开发过程中,我们经常需要对页面上展示的数据进行灵活的处理,尤其是当数据以列表或序列的形式呈现时。想象一下,您正在设计一个产品列表页,需要从一个包含数十个产品的数组中,只挑选出最热门的5个产品在页面顶部展示;或者,您可能在一个文章详情页中,需要将文章内容中的某个长字符串截取一部分作为摘要。这时,如何在AnQiCMS模板中精确地截取一个数组(slice)或字符串中指定范围的元素

2025-11-07

`split`过滤器在分隔符为空或不存在时,会有哪些不同的拆分行为?

在安企CMS的模板开发中,`split`过滤器是一个非常实用的工具,它能够帮助我们将字符串按照指定的分隔符拆分成数组,这在处理列表数据、标签内容或任何结构化文本时都十分方便。然而,当分隔符为空字符串或在目标字符串中不存在时,`split`过滤器的行为会展现出一些巧妙的特性,理解这些特性对于模板的精确控制和避免潜在错误至关重要。 ### `split`过滤器的基本作用 通常情况下

2025-11-07

`make_list`过滤器与`split`过滤器在将字符串拆分成数组时,主要区别和适用场景是什么?

在安企CMS的模板开发中,经常会遇到需要将一段字符串内容拆分成多个部分,以便进行进一步处理或动态展示。为了满足这种需求,AnQiCMS的模板引擎提供了`make_list`和`split`这两个非常有用的过滤器。虽然它们都能将字符串转换成数组,但在实际使用中,两者的核心功能、拆分逻辑和适用场景却有着明显的区别。理解这些差异,能帮助我们更高效、准确地处理内容。 ### `split`过滤器

2025-11-07

如何将模板中动态生成的数组(如标签列表),按指定分隔符重新组合成一个字符串显示?

在网站内容运营中,我们经常需要将一系列相关联的信息以列表的形式展示给用户,比如一篇文章的所有标签、一个产品的多个特性或一套图片的URL。AnQiCMS的模板系统在获取这些数据时,通常会以动态数组(或称作切片、列表)的形式提供。但有时,为了美观、SEO优化或特定的显示需求,我们可能需要将这些数组元素以一个统一的分隔符(如逗号、斜杠或管道符)重新组合成一个连贯的字符串来显示

2025-11-07

在处理用户标签输入时,如何利用`split`和`join`过滤器实现标签的标准化处理?

在安企CMS的日常内容运营中,用户提交的标签(Tag)常常面临一个常见的问题:格式不统一。有些用户习惯用逗号分隔,有些用分号,甚至可能用中文逗号或者直接用空格。这些不规范的输入,如果直接展示在网站前台,不仅影响美观,也可能降低标签的可用性,例如在生成标签云或进行SEO优化时造成困扰。 幸运的是,安企CMS强大的模板引擎提供了`split`和`join`这两个非常实用的过滤器

2025-11-07