如何在 AnQiCMS 模板中判断一个字符串是否包含某个关键词并显示结果?

📅 👁️ 72

在网站运营中,我们经常会遇到这样的需求:根据网页内容的特定信息,动态地调整内容的展示方式。比如,如果一篇文章标题中包含了“促销”或“活动”等关键词,我们可能希望它自动显示一个醒目的标签;或者,为了内容审核和用户体验,需要检查文章中是否存在某些敏感词汇,并据此进行相应的处理。

安企CMS作为一个功能强大且灵活的内容管理系统,提供了直观的模板标签和过滤器,让这些动态判断和展示变得非常简单。本文将详细介绍如何在AnQiCMS模板中判断一个字符串是否包含某个关键词,并在此基础上实现多种内容运营策略。


一、核心方案:利用 contain 过滤器判断关键词

在AnQiCMS的模板系统中,最直接、最常用的方法就是使用 contain 过滤器。这个过滤器能够检查一个字符串(或数组、键值对等)是否包含指定的关键词(子字符串),并返回一个布尔值(TrueFalse)。

基本用法:

contain 过滤器的使用非常直观,它接受一个关键词作为参数,并将其应用于目标字符串。

{{ 目标字符串|contain:"关键词" }}

例如,要判断一个文章标题 article.Title 是否包含“促销”这个词:

{{"我们的AnQiCMS最新功能"|contain:"AnQiCMS"}} {# 这将输出 True #}
{{"这是一篇普通文章"|contain:"促销"}} {# 这将输出 False #}

结合条件判断 {% if %} 显示结果:

由于 contain 过滤器返回的是一个布尔值,它与模板中的条件判断标签 {% if %} 结合使用,就能实现动态内容的展示。

假设您希望在文章标题包含“热门”二字时,显示一个“热门”的角标:

{% if article.Title|contain:"热门" %}
    <span class="badge badge-hot">热门</span>
{% endif %}
<h2 class="article-title">{{ article.Title }}</h2>

存储判断结果到变量 {% set %}

在某些情况下,您可能需要将判断结果存储到一个临时变量中,以便在模板的多个位置复用这个结果,或者进行更复杂的逻辑判断。这时,可以使用 {% set %} 标签。

{% set isSpecialOffer = article.Description|contain:"限时优惠" %}

{% if isSpecialOffer %}
    <p class="promo-message">🎉 限时优惠中,抓住机会!</p>
{% endif %}

<div class="product-description">
    {{ article.Description }}
</div>

contain 过滤器对数组和键名键值对的支持:

值得一提的是,contain 过滤器不仅限于字符串。它还能用于检查数组中是否存在某个值,或者检查键值对(map/struct)中是否存在某个键名。

  • 检查数组:
    
    {% set tags = ["CMS", "Go", "内容管理", "企业站"] %}
    {% if tags|contain:"内容管理" %}
        <p>文章包含“内容管理”标签。</p>
    {% endif %}
    
  • 检查键名(对结构体或 map):
    
    {# 假设 article.Extra 是一个包含自定义字段的 map 或 struct #}
    {% if article.Extra|contain:"author" %}
        <p>此文章有作者信息。</p>
    {% endif %}
    

二、拓展应用:更多关键词处理过滤器

除了 contain,AnQiCMS还提供了其他实用的过滤器,可以帮助您更精细地处理与关键词相关的功能。

  1. count 过滤器:统计关键词出现次数 如果您不仅想知道关键词是否存在,还想知道它出现了多少次,count 过滤器会非常有用。

    {% set keywordCount = archive.Content|count:"安企CMS" %}
    {% if keywordCount > 0 %}
        <p>文章内容中“安企CMS”一词出现了 {{ keywordCount }} 次。</p>
    {% endif %}
    

    这对于分析关键词密度,或者在多处提及特定内容时进行统计非常方便。

  2. index 过滤器:获取关键词首次出现的位置 index 过滤器返回关键词在字符串中首次出现的起始位置(索引)。如果关键词不存在,则返回 -1。

    {% set firstOccurrence = article.Title|index:"活动" %}
    {% if firstOccurrence != -1 %}
        <p>“活动”一词在标题中首次出现在第 {{ firstOccurrence }} 个位置。</p>
    {% else %}
        <p>标题中不包含“活动”一词。</p>
    {% endif %}
    

    请注意,在处理包含中文字符的字符串时,index 过滤器在计算位置时可能会将一个中文字符计为多个字节,这取决于其底层实现,所以返回的索引可能不是您直观上理解的字符数位置。

  3. replace 过滤器:替换字符串中的关键词 当您需要修改字符串中的关键词时,replace 过滤器就派上用场了。它可以将旧的关键词替换为新的内容。

    {% set originalTitle = "安企CMS:高效内容管理" %}
    {% set newTitle = originalTitle|replace:"安企CMS,AnQiCMS" %}
    <p>原标题:{{ originalTitle }}</p>
    <p>新标题:{{ newTitle }}</p>
    

    这个功能在敏感词过滤、关键词高亮显示、品牌名称统一等场景中非常实用。例如,为了突出显示某个特定词语,您可以将其替换为带有HTML标签的版本:

    ”`twig

相关文章

AnQiCMS 的模板继承 (`extends`) 和包含 (`include`) 标签如何优化页面布局显示?

在网站建设中,如何高效地组织页面结构,让代码可复用、易维护,是提升开发效率和项目质量的关键。AnQiCMS 充分考虑了这一点,提供了强大的模板继承(`extends`)和模板包含(`include`)标签,让我们可以像搭积木一样构建网站,轻松实现复杂的页面布局和显示优化。 ### 一、模板包含(`include`):构建灵活的页面模块 想象一下,一个网站的头部导航、底部版权信息

2025-11-09

AnQiCMS 如何在文章内容中实现锚文本的自动替换和显示?

在网站运营中,锚文本(Anchor Text)是连接不同页面、提升内容关联性和优化搜索引擎排名的重要元素。一个精心设置的锚文本不仅能引导用户发现更多相关信息,还能帮助搜索引擎更好地理解页面内容和网站结构。对于使用安企CMS(AnQiCMS)管理内容的您来说,系统提供了高效且智能的机制,让文章内容中的关键词自动转换为带有链接的锚文本,从而大大提升内容运营的效率和效果。 ### 安企CMS

2025-11-09

如何在 AnQiCMS 评论表单中添加验证码功能以减少垃圾评论的显示?

在网站运营中,垃圾评论无疑是一个让人头疼的问题。它们不仅会影响网站的用户体验,稀释高质量的讨论内容,还可能在无形中损害网站的SEO表现,甚至占据宝贵的服务器资源。面对日益智能化的垃圾评论机器人,我们需要更有效的防御手段。幸运的是,AnQiCMS 提供了一个简单而强大的解决方案——为评论表单添加验证码功能,这能显著减少垃圾评论的侵扰。 这篇文章将详细带你了解如何在 AnQiCMS

2025-11-09

AnQiCMS 的 `tagDataList` 标签如何根据指定的 Tag ID 显示相关文章列表?

在安企CMS中管理和展示内容,尤其是在需要根据特定主题或关键词聚合文章时,标签(Tag)功能显得尤为重要。它不仅能帮助访问者快速找到感兴趣的内容,还能有效提升网站的内部链接结构和SEO表现。今天,我们来深入了解一下 AnQiCMS 中一个非常实用的模板标签:`tagDataList`,看看它如何根据指定的 Tag ID 精准地展示相关文章列表。 ### 核心功能解析:`tagDataList`

2025-11-09

AnQiCMS 如何将 GoLang 的 `time.Time` 类型变量格式化为可读的日期字符串显示?

在 AnQiCMS 中管理网站内容,我们经常会遇到需要显示日期和时间的情况,例如文章的发布时间、更新时间,或者用户上次登录的时间等等。这些时间数据在 GoLang 后端通常以 `time.Time` 类型存储。当它们被传递到前端模板时,如果不进行适当的格式化,可能会显示为一串难以理解的时间戳或默认的Go语言格式,这显然不符合我们展示给访客的需求。 幸运的是,AnQiCMS

2025-11-09

如何在 AnQiCMS 模板中实现自定义的 JSON-LD 结构化数据以优化搜索结果显示?

在当今的数字营销环境中,仅仅拥有优质内容是不够的,如何让搜索引擎更好地理解和展示这些内容,正变得越来越关键。结构化数据,特别是 JSON-LD,就是我们手中的一把利器,它能帮助我们的网站在搜索结果中以更丰富、更吸引人的形式呈现,也就是我们常说的“富摘要”(Rich Snippets)。 安企CMS(AnQiCMS)作为一款以Go语言为核心开发的企业级内容管理系统

2025-11-09

AnQiCMS 的 `urlizetrunc` 过滤器如何截取过长的 URL 并在链接中显示省略号?

AnQiCMS `urlizetrunc` 过滤器:让冗长网址优雅变身省略号 在日常的网站运营中,我们经常需要在文章、评论或者产品描述中引用外部链接。这些链接可能是为了提供参考资料、引导用户访问相关页面,或是展示产品视频等等。然而,有时这些 URL 会非常冗长,不仅占据大量页面空间,影响整体布局的美观性,还会降低内容的阅读体验。想象一下,如果一个段落中充斥着几行长的 URL 字符串

2025-11-09

如何在 AnQiCMS 模板中移除 HTML 标签,只显示纯文本内容?

在 AnQiCMS 的内容管理实践中,有时我们会遇到这样的需求:从包含丰富格式(如加粗、斜体、图片、链接等)的文档内容中,提取出纯粹的文本信息。这可能听起来有些矛盾,内容管理系统本就致力于内容的多元展示,为何还要“剥离”这些格式呢?然而,在许多特定场景下,只显示纯文本内容却能发挥关键作用,例如为文章生成简洁的摘要、优化搜索引擎的元描述(Meta Description)

2025-11-09