AnQiCMS模板中如何判断字符串或数组是否包含特定关键词并显示结果?

📅 👁️ 70

在构建和管理网站内容时,我们经常会遇到这样的需求:根据文章标题是否含有某个关键词,来决定是否显示一个“热点”标签;或者检查产品描述中是否提到某个特性,从而调整其展示样式。这些看似细微的动态调整,却能极大提升网站的智能化和用户体验。在AnQiCMS中,由于其灵活的Django模板引擎语法,实现这类判断并不复杂。

AnQiCMS的模板系统提供了丰富的过滤器和逻辑标签,让内容运营者无需深入后端代码,就能在前端模板层面实现复杂的逻辑判断。今天,我们就来聊聊如何在AnQiCMS模板中,判断字符串或数组是否包含特定关键词,并根据结果来智能地展示内容。

核心利器:contain 过滤器

AnQiCMS 的模板引擎提供了一个非常实用的 contain 过滤器。这个过滤器能够帮助我们迅速判断一个字符串中是否含有某个特定的词,或者一个数组里是否包含某个元素。它的工作方式非常直观,会返回 TrueFalse 这样的布尔值,方便我们进行后续的逻辑判断。

例如,如果你想检查一段文字是否包含“CMS”这个词,可以直接这样写:

{{ "欢迎使用安企CMS(AnQiCMS)"|contain:"CMS" }}

这段代码执行后,会直接输出 True

如果你的数据是一个数组,比如一个文章的标签列表,想知道其中是否包含“SEO优化”这个标签,可以先将逗号分隔的字符串转换为数组,然后使用 contain 过滤器进行判断:

{% set tags_string = "安企CMS,SEO优化,多站点管理" %}
{% set tags_array = tags_string|split:"," %} {# 使用 split 过滤器将字符串按逗号分隔成数组 #}
{{ tags_array|contain:"SEO优化" }}

这同样会输出 True

甚至,contain 过滤器还能用来检查一个键值对(map)或结构体(struct)中是否存在某个键名(key)。比如,你有一个存储产品信息的对象,想知道它是否包含“version”这个键:

{% set product_info = {name: "AnQiCMS", version: "3.0"} %}
{{ product_info|contain:"version" }}

这也会输出 True

结合 if 标签,智能展示内容

仅仅知道 True 或 False 显然不够,我们还需要根据这个结果来采取行动。这时,模板中的 if 逻辑判断标签就派上用场了。我们可以将 contain 过滤器的结果直接用在 if 语句中,从而实现内容的条件性展示。

想象一下,你希望给所有标题中包含“新品”的文章加上一个醒目的“新品上市”角标。在文章列表的模板中,你可以这样实现:

{% archiveList articles with type="list" limit="5" %}
    {% for item in articles %}
        <li>
            {% if item.Title|contain:"新品" %}
                <span style="color: red; font-weight: bold;">【新品上市】</span>
            {% endif %}
            <a href="{{item.Link}}">{{item.Title}}</a>
            <p>{{item.Description|truncatechars:100}}</p>
        </li>
    {% empty %}
        <p>暂时没有文章。</p>
    {% endfor %}
{% endarchiveList %}

这样,只有当文章标题 item.Title 包含“新品”时,才会显示红色的“【新品上市】”字样。

如果你的判断条件更复杂,需要同时检查多个关键词,或者满足其中之一即可,if 标签的 andor 逻辑运算符就派上用场了。例如,一篇文章的描述中同时提到“Go语言”和“SEO优化”时,显示特定的提示:

{% set article_desc = "安企CMS是基于Go语言开发的系统,支持多站点和强大的SEO优化功能。" %}
{% if article_desc|contain:"Go语言" and article_desc|contain:"SEO优化" %}
    <p>这篇文章深度探讨了Go语言和SEO优化。</p>
{% elif article_desc|contain:"多站点" %}
    <p>这篇文章介绍了多站点管理特性。</p>
{% else %}
    <p>文章内容普通。</p>
{% endif %}

更多实用过滤器辅助判断与展示

除了 contain 之外,AnQiCMS 模板还提供了其他一些与关键词判断和展示相关的过滤器,它们能在不同场景下提供帮助。

  • count 过滤器:计算关键词出现次数 有时候,我们不仅想知道某个关键词“有”或“没有”,还想知道它出现了多少次。count 过滤器就能帮你实现这一点。

    {% set article_content = "安企CMS,高效的CMS,值得信赖的CMS,让你的CMS运营更轻松。" %}
    <p>"CMS" 在文章中出现了 {{ article_content|count:"CMS" }} 次。</p>
    

    这将输出 "CMS" 在文章中出现了 3 次。

  • index 过滤器:获取关键词首次出现的位置 如果关键词出现的位置对于你的内容展示很重要,index 过滤器可以返回关键词首次出现的起始位置。如果没有找到,则返回 -1

    {% set intro_text = "AnQiCMS是领先的CMS内容管理系统。" %}
    {% set cms_position = intro_text|index:"CMS" %}
    {% if cms_position != -1 %}
        <p>"CMS" 首次出现在文本的第 {{ cms_position }} 个位置。</p>
    {% else %}
        <p>未找到"CMS"。</p>
    {% endif %}
    

    请注意,在计算位置时,中文会占用多个字节,可能会导致与预期有所差异,通常在英文场景下更为精确。

  • split 过滤器:将字符串切割为数组 正如前面数组示例中所示,当你的数据源本身是一个逗号、空格或其他符号分隔的字符串,但你需要把它当成数组来判断时,split 过滤器可以帮你。它可以将字符串按照指定的分隔符切割成一个字符串数组。

    ”`twig {% set product_features_str = “高性能,模块化设计,SEO友好” %} {% set product_features_array = product

相关文章

如何使用AnQiCMS过滤器将字符串按指定长度居中或对齐显示?

在网站内容展示中,我们经常需要对文本进行格式化处理,以使其在布局上更加美观、规整,尤其是在列表、表格或需要统一视觉效果的区域。安企CMS(AnQiCMS)强大的模板引擎提供了多种实用的过滤器(filters),能够帮助我们轻松实现字符串的居中、靠左或靠右对齐,并可按指定长度进行填充。 本文将详细介绍如何在AnQiCMS中使用`center`、`ljust`和`rjust`这三个核心过滤器

2025-11-07

AnQiCMS模板中如何对数字和字符串进行加法运算并显示结果?

在安企CMS的模板中构建动态内容时,经常需要对数字或字符串进行简单的计算和拼接。无论是展示累加的用户积分,还是组合显示带有特定前缀的商品编码,安企CMS都提供了灵活便捷的方式来实现这些需求。本文将深入探讨在AnQiCMS模板中如何进行加法运算,并给出详细的示例和实用建议。 ### 理解安企CMS模板中的计算能力 安企CMS的模板系统基于类似Django模板引擎的语法

2025-11-07

如何显示AnQiCMS页面的规范链接(Canonical URL)?

在网站运营中,我们经常会遇到内容在不同URL下重复出现的情况。例如,一个商品可能有多种颜色,每种颜色都生成一个独立的页面,但它们的核心内容却是相同的。又或者,网站为了追踪流量,会在URL中添加各种参数。这些“重复”的内容,虽然对用户体验影响不大,但却可能让搜索引擎感到困惑,不知道哪个才是“原版”,从而可能影响网站的抓取效率和排名。 这时,“规范链接”(Canonical URL)就派上用场了

2025-11-07

如何在AnQiCMS中正确配置伪静态规则以生成对用户和搜索引擎友好的URL?

在网站运营中,一个对用户和搜索引擎都友好的URL结构至关重要。它不仅让访问者能一眼了解页面内容,也方便搜索引擎抓取和理解您的网站,这直接影响着您网站的SEO表现和用户体验。安企CMS(AnQiCMS)深知这一点,因此内置了强大的伪静态功能,让您轻松定制网站的URL。 接下来,我们将一起探索如何在AnQiCMS中正确配置伪静态规则,生成那些既美观又实用的URL。 ## 伪静态URL

2025-11-07

如何计算AnQiCMS模板中字符串或数组中特定关键词的出现次数?

在日常网站运营中,我们经常需要对内容进行细致的分析和管理。其中一个常见的需求是,统计网站模板中某个字符串或数组内特定关键词的出现次数。无论是为了优化SEO关键词密度、分析内容热点,还是为了在页面上动态展示相关信息,了解如何在AnQiCMS模板中实现这一功能都非常有帮助。 AnQiCMS得益于其强大且灵活的Django风格模板引擎,提供了丰富的内置标签和过滤器,让这些操作变得异常简单。接下来

2025-11-07

如何在AnQiCMS模板中移除字符串中的指定字符以优化显示?

在网站运营中,内容呈现的清晰度和用户体验至关重要。有时,我们从后台录入的内容或者从数据库中获取的字段可能包含一些不必要的字符,比如多余的空格、特定的分隔符、或者需要清理的引导性文本,这些都可能影响页面的美观和内容的阅读流畅性。AnQiCMS作为一个高效且灵活的内容管理系统,提供了强大的模板引擎和丰富的过滤器功能,让我们可以轻松地在模板层面处理这些字符串,优化最终的显示效果

2025-11-07

如何将AnQiCMS模板中的数字字符串转换为浮点数或整数进行显示?

在 AnQiCMS 的模板开发中,处理数据是核心环节之一。系统灵活的内容模型允许我们自定义各种字段来存储网站信息,其中不乏需要用到数字的场景,例如商品价格、库存数量、评分等。虽然这些数字在后台看起来是正常的,但当它们在模板中被调用时,很可能以字符串的形式呈现。这就带来了一个常见的问题:如何在模板中将这些数字字符串转换为浮点数或整数,以便进行数学运算或按特定格式显示呢? AnQiCMS

2025-11-07

如何在AnQiCMS模板中将数组元素链接成字符串进行显示?

在AnQiCMS的模板开发中,我们常常会遇到需要展示一系列相关数据的情况,例如一篇文章的多个标签、一个产品的多种特性,或者某个自定义字段存储的多个选项。这些数据在模板中往往以数组的形式存在,而我们希望将它们以一个简洁、美观的字符串形式展示出来,比如用逗号、斜杠或其他符号连接。 AnQiCMS的模板系统基于类似Django的语法,提供了强大且灵活的过滤器功能

2025-11-07