如何在 AnQiCMS 模板中检查文章内容是否包含特定关键词,并基于此进行条件显示?

📅 👁️ 75

在网站内容运营中,我们经常需要根据文章的实际内容,灵活地调整页面的显示方式。例如,如果一篇文章提及了某个特定产品或活动,我们可能希望在页面上突出显示相关的购买链接或促销信息;如果文章内容涉及敏感话题,则可能需要添加额外的免责声明。这种基于文章内容进行条件显示的需求,在安企CMS(AnQiCMS)的模板中是完全可以实现的。

安企CMS采用类似Django的模板引擎语法,这使得其模板具有良好的可读性和强大的逻辑处理能力。在AnQiCMS的模板中,我们可以通过特定的标签和过滤器,轻松地检查文章内容是否包含我们预设的关键词,并根据检查结果来控制页面元素的展示。

如何在AnQiCMS模板中检查文章内容是否包含特定关键词,并基于此进行条件显示?

要实现这一目标,我们需要用到安企CMS模板中的几个核心功能:

  1. archiveDetail 标签:用于获取当前或指定文章的详细信息,包括文章内容。
  2. set 标签(或 with:用于在模板中定义和赋值变量,以便我们存储获取到的文章内容和判断结果。
  3. contain 过滤器:这是进行关键词检查的关键工具,它能判断一个字符串中是否包含另一个子字符串。
  4. if 逻辑判断标签:根据 contain 过滤器的判断结果(真或假)来执行不同的模板代码块。

下面,我们将通过具体的步骤和代码示例,来详细阐述如何在AnQiCMS模板中实现这一功能。


一、获取文章内容

首先,我们需要在模板中获取当前文章的详细内容。在文章详情页(例如 archive/detail.html)中,archiveDetail 标签可以帮助我们获取文章的 Content 字段。为了便于后续操作,我们通常会将获取到的内容赋值给一个变量。

{# 获取当前文章的Content内容,并赋值给名为 articleContent 的变量 #}
{% archiveDetail articleContent with name="Content" %}

{# 此时,articleContent 变量中就包含了文章的正文HTML内容 #}

请注意,articleContent 变量中存储的是包含HTML标签的完整文章内容。在实际显示文章内容时,通常需要加上 |safe 过滤器,以确保HTML标签能被浏览器正确解析而非被转义显示。


二、定义要检查的关键词并进行判断

接下来,我们需要确定要检查的特定关键词,并使用 contain 过滤器来判断 articleContent 中是否包含这些关键词。

contain 过滤器非常直观,其基本用法是 {{ obj|contain:关键词 }},它会返回一个布尔值(TrueFalse),表示 obj 是否包含指定的 关键词

我们可以将 contain 过滤器的判断结果也赋值给一个新变量,然后结合 if 标签进行条件显示。

1. 检查单个关键词

假设我们想检查文章内容是否包含“限时优惠”这个关键词:

{# 假设我们正在文章详情页 template/archive/detail.html #}

{# 步骤一:获取文章内容并赋值给 articleContent 变量 #}
{% archiveDetail articleContent with name="Content" %}

{# 步骤二:定义要检查的关键词 #}
{% set targetKeyword = "限时优惠" %}

{# 步骤三:使用 contain 过滤器检查文章内容是否包含该关键词,并将结果赋值给 hasOffer 变量 #}
{% set hasOffer = articleContent|contain:targetKeyword %}

{# 步骤四:根据 hasOffer 的值进行条件显示 #}
{% if hasOffer %}
    <div class="promo-banner" style="background-color: #fff3cd; padding: 10px; border: 1px solid #ffeeba; margin-bottom: 20px;">
        <p style="color: #856404; font-weight: bold;">🎉 注意:本文可能包含 <span style="color: red;">{{ targetKeyword }}</span> 信息,不容错过!</p>
        {# 您可以在这里放置一个醒目的促销链接或活动详情 #}
        <a href="/promo-page" style="color: #007bff; text-decoration: underline;">查看最新优惠活动 →</a>
    </div>
{% endif %}

{# 显示文章正文 #}
<div class="article-main-content">
    {{ articleContent|safe }}
</div>

在这个示例中,如果 articleContent 中包含“限时优惠”这个字符串,页面顶部就会显示一个黄色的促销提示条。

2. 检查多个关键词(满足任意一个即可)

如果我们需要检查多个关键词,只要文章内容包含其中任意一个,就进行条件显示,可以使用 or 逻辑运算符将多个 contain 判断连接起来:

{% archiveDetail articleContent with name="Content" %}

{% set keyword1 = "免费试用" %}
{% set keyword2 = "新用户福利" %}
{% set keyword3 = "体验版" %}

{# 只要包含任意一个关键词,hasFreebie 就为 True #}
{% set hasFreebie = articleContent|contain:keyword1 or articleContent|contain:keyword2 or articleContent|contain:keyword3 %}

{% if hasFreebie %}
    <div class="freebie-alert" style="background-color: #d1ecf1; padding: 10px; border: 1px solid #bee5eb; margin-bottom: 20px;">
        <p style="color: #0c5460;">✨ 本文提及 {{ keyword1 }}、{{ keyword2 }} 或 {{ keyword3 }},快来领取您的专属福利!</p>
        <a href="/free-trial" style="color: #007bff; text-decoration: underline;">立即前往 →</a>
    </div>
{% endif %}

<div class="article-main-content">
    {{ articleContent|safe }}
</div>

3. 检查多个关键词(必须全部满足)

如果要求文章内容必须同时包含所有指定的关键词,才进行条件显示,可以使用 and 逻辑运算符:

{% archiveDetail articleContent with name="Content" %}

{% set reqKeyword1 = "AnQiCMS" %}
{% set reqKeyword2 = "安装教程" %}
{% set reqKeyword3 = "Go语言" %}

{# 只有同时包含所有关键词,isComprehensive 就为 True #}
{% set isComprehensive = articleContent|contain:reqKeyword1 and articleContent|contain:reqKeyword2 and articleContent|contain:reqKeyword3 %}

{% if isComprehensive %}
    <div class="tech-note" style="background-color: #d4edda; padding: 10px; border: 1px solid #c3e6cb; margin-bottom: 20px;">
        <p style="color: #155724;">✅ 本文详细介绍了 <span style="font-weight: bold;">{{ reqKeyword1 }} 的 {{ reqKeyword2 }}</span>,并且强调了其 <span style="font-weight: bold;">{{ reqKeyword3 }}</span> 的技术背景。对技术感兴趣的您请仔细阅读!</p>
    </div>
{% endif %}

<div class="article-main-content">
    {{ articleContent|safe }}
</div>

三、应用场景思考

这种基于关键词的条件显示功能,在实际运营中有着广泛的应用:

  • 个性化推荐与营销:如果文章中提到某个产品型号,可以在文章底部自动插入该产品的销售链接

相关文章

`autoescape` 标签在 AnQiCMS 模板中如何控制 HTML 标签的自动转义功能?

在 AnQiCMS 的模板系统中,我们日常内容展示的核心,离不开对 HTML 标签的处理。为了确保网站的安全,AnQiCMS 默认会对模板中输出的变量进行 HTML 自动转义。这一机制有效防止了恶意代码的注入,例如常见的跨站脚本攻击(XSS)。然而,在某些场景下,我们可能需要显示包含 HTML 标签的富文本内容,这时就需要了解如何灵活地控制这种自动转义功能。 ### 自动转义

2025-11-09

AnQiCMS 模板如何安全地显示用户提交的富文本内容,以防止潜在的 XSS 攻击?

在网站运营过程中,显示用户提交的富文本内容,例如文章评论、论坛帖子或博客内容,是不可避免的需求。然而,这些内容中可能隐藏着恶意脚本,若不加防范地直接展示,就可能导致跨站脚本(XSS)攻击,对网站访客造成潜在威胁。安企CMS(AnQiCMS)在设计时充分考虑了这一安全隐患,并通过其模板引擎提供了一系列机制来帮助我们安全地处理这类富文本内容。 ###

2025-11-09

`striptags` 和 `removetags` 过滤器在 AnQiCMS 模板中清理 HTML 代码时,各自的适用场景是什么?

在 AnQiCMS 的模板设计中,我们经常会遇到需要对内容中的 HTML 代码进行清理或精简的情况。这不仅仅是为了美观,更是为了确保内容的正确展示、提高页面加载效率,甚至是为了防范潜在的安全风险。安企CMS为此提供了两个非常实用的过滤器:`striptags` 和 `removetags`。虽然它们都与 HTML 标签的移除有关,但各自有着明确的适用场景。 ### `striptags`

2025-11-09

如何在 AnQiCMS 模板中根据内容长度判断是否需要截断文本并添加省略号(...)?

在AnQiCMS网站内容运营中,如何优雅地处理过长的文本内容,使其在页面上既美观又不失完整性,是提升用户体验的关键。特别是在列表页、卡片展示或简介区域,文本过长常常会导致排版错乱,影响整体视觉效果。AnQiCMS强大的模板引擎提供了多种灵活的方式来解决这一问题,其中最常用的就是文本截断并添加省略号的功能。 AnQiCMS的模板系统借鉴了Django模板引擎的语法

2025-11-09

AnQiCMS 模板中 `for` 循环如何判断当前遍历项是否为循环中的第一项或最后一项?

在 AnQiCMS 的模板开发中,我们经常会遇到需要列表循环展示数据的情况,比如文章列表、产品分类、导航菜单等。在这些循环中,有时我们需要对列表的第一项或最后一项进行特殊处理,例如添加独特的 CSS 样式、显示不同的内容,或者巧妙地处理列表项之间的分隔符。AnQiCMS 采用了类似 Django 模板引擎的语法,为我们提供了非常直观且强大的工具来解决这类常见的模板逻辑问题。 ### 核心机制

2025-11-09

`cycle` 标签在 AnQiCMS 模板中如何实现循环交替显示不同的样式或数据?

AnQiCMS 在模板开发中提供了许多实用的标签,让内容展示更加灵活高效。其中,`cycle` 标签就是这样一个巧妙的工具,它能帮助我们在循环中实现数据或样式的交替显示,从而让页面内容更具动态性和视觉吸引力。 ### 认识 `cycle` 标签:循环中的序列控制器 在网页设计中,我们经常会遇到需要对重复出现的元素应用不同样式,或者以特定顺序展示不同类型数据的情况。例如

2025-11-09

如何在 AnQiCMS 模板的 `for` 循环中,根据特定条件跳过某些项的显示?

在 AnQiCMS 的模板开发中,我们常常需要展示一系列内容,例如文章列表、产品列表或导航菜单。但很多时候,我们并不希望将所有数据都一股脑地显示出来,而是希望能根据某些特定条件,巧妙地跳过其中一部分,让最终展示的内容更加精准和符合用户需求。AnQiCMS 采用类似 Django 模板引擎的语法,这为我们实现这种条件性跳过提供了强大而灵活的工具。 要实现在 `for`

2025-11-09

AnQiCMS 模板如何判断自定义字段是否存在,并根据其值进行条件渲染?

在AnQiCMS模板开发中,灵活地展示内容是提升用户体验和网站专业度的关键。其中,对自定义字段进行判断并根据其值进行条件渲染,是实现这一目标不可或缺的技巧。通过这种方式,您可以确保页面内容的精确展示,避免显示空值,或根据特定数据动态调整页面布局和功能。 ### 理解AnQiCMS自定义字段及其在模板中的获取方式 AnQiCMS作为一款功能强大的内容管理系统

2025-11-09