如何在AnqiCMS模板中判断字符串、数组或对象是否包含特定关键词,并基于此动态显示内容?

📅 👁️ 62

在AnqiCMS中,灵活地根据内容判断和动态展示信息,是提升网站用户体验和SEO效果的关键。想象一下,您的网站可以根据文章是否提及某个特定产品,自动显示相关的购买链接;或者根据用户所在的分类,推荐不同的侧边栏内容。这不仅让您的网站更智能,也大大提高了内容运营的效率。

AnqiCMS的模板引擎提供了强大的功能,帮助您轻松实现这些动态逻辑。它借鉴了Django模板引擎的语法,让条件判断和数据遍历变得直观。今天,我们就来深入探讨如何在AnqiCMS模板中,判断字符串、数组或对象是否包含特定关键词,并基于此动态显示内容。

理解 AnqiCMS 模板中的判断逻辑

AnqiCMS模板的核心在于其简洁而强大的标签。变量通常用双花括号 {{变量}} 包裹,而逻辑控制(如条件判断和循环)则使用单花括号和百分号 {% 标签 %}。在需要根据数据内容进行动态展示时,if 逻辑判断标签 {% if ... %} 是我们的基础工具,它允许我们定义条件,当条件为真时执行相应的模板代码。

然而,仅仅有 if 标签还不够。我们还需要一个方法来判断变量中是否“包含”某个特定的值。这时,AnqiCMS提供的一个非常有用的工具就派上用场了——那就是 contain 过滤器。

核心利器:contain 过滤器

contain 过滤器是AnqiCMS模板引擎中专门用于检测内容是否包含特定关键词的工具。它的功能非常强大,不仅可以判断一行字符串中是否包含某个关键词,还能检测数组(slice)中是否存在某个元素,甚至可以判断键值对(map)或结构体(struct)中是否存在某个键名。

contain 过滤器的基本用法非常简单:您只需将待检查的变量通过管道符 | 传递给 contain 过滤器,并在冒号 : 后指定您要查找的关键词。

例如:{{ obj|contain:"关键词" }}

这个过滤器会返回一个布尔值(TrueFalse)。如果找到关键词,则返回 True;否则,返回 False。有了这个布尔值,我们就可以结合 if 标签,轻松实现动态内容展示。

实际应用场景:根据内容动态显示

让我们通过具体的例子,看看 contain 过滤器在不同数据类型下的应用。

1. 判断文本字符串是否包含特定关键词

这是最常见的应用场景。例如,您希望如果一篇文章的标题或描述中包含“优惠”二字,就显示一个特殊的促销图标或链接。

{% archiveDetail article with name="Description" %} {# 获取当前文章的描述内容 #}

{% if article|contain:"优惠" %}
    <span class="promo-badge">限时优惠!</span>
    <a href="/promotions" class="btn btn-primary">立即查看优惠商品</a>
{% else %}
    <a href="/products" class="btn btn-secondary">浏览所有商品</a>
{% endif %}

在这个例子中,archiveDetail 标签获取了当前页面的文章描述。然后,我们使用 article|contain:"优惠" 来判断这个描述字符串是否含有“优惠”一词。如果包含,则显示促销信息;否则,显示普通商品链接。

2. 判断数组(Slice)中是否存在特定元素

有时,您会遇到列表类型的数据,例如文章的标签(Tag)列表。您可能希望如果文章被标记为“新品”,就显示一个“NEW”的角标。

假设 tags 是一个包含字符串的数组,比如 ["GoLang", "CMS", "SEO"]

{% tagList tags with itemId=archive.Id limit="10" %} {# 获取当前文章的标签列表 #}

{% if tags|contain:"新品" %}
    <span class="new-badge">NEW</span>
{% endif %}

{# 也可以遍历标签列表,判断每个标签的Title属性 #}
{% for tag in tags %}
    {% if tag.Title|contain:"新品" %}
        <span class="new-badge">NEW</span>
    {% endif %}
{% endfor %}

这里,tagList 标签获取了当前文章关联的所有标签。tags|contain:"新品" 会检查这个标签名称数组中是否有“新品”这个元素。当然,如果 tags 是一个对象数组(如 tag.Title),您可能需要遍历数组,并对每个元素的特定属性进行判断。

3. 判断对象(Map/Struct)中是否存在特定键名

自定义字段在AnqiCMS中非常灵活,您可以通过内容模型为文章或产品添加任意自定义字段。假设您为产品模型添加了一个名为“VideoLink”的自定义字段,用于存储产品演示视频的链接。如果这个字段存在,您就想在页面上嵌入一个视频播放器。

{% archiveParams params with sorted=false %} {# 获取当前文章的所有自定义参数,以map形式返回 #}

{% if params|contain:"VideoLink" %}
    <div class="product-video">
        <h3>产品演示</h3>
        <iframe src="{{ params.VideoLink.Value }}" frameborder="0" allowfullscreen></iframe>
    </div>
{% else %}
    <p>暂无产品演示视频。</p>
{% endif %}

在这个例子中,archiveParams 标签获取了文章的所有自定义参数。params|contain:"VideoLink" 判断 params 这个对象中是否存在名为“VideoLink”的键。如果存在,我们就可以通过 params.VideoLink.Value 来获取视频链接并嵌入播放器。

灵活组合:让内容呈现更智能、更精准

contain 过滤器与 ifelseelif 标签的结合,可以实现非常复杂的动态内容逻辑。例如,您可以根据文章内容的不同关键词,展示不同的侧边栏推荐文章、调用不同的CSS样式,甚至改变页面的整体布局。

{% archiveDetail articleContent with name="Content" %} {# 获取文章完整内容 #}

{# 如果内容包含“联系我们”且包含“定制服务”,显示定制服务表单 #}
{% if articleContent|contain:"联系我们" and articleContent|contain:"定制服务" %}
    <div class="custom-service-form">
        <h4>定制服务需求提交</h4>
        {% guestbook fields %}
            {# 这里嵌入留言表单的字段 #}
        {% endguestbook %}
    </div>
{# 如果只包含“联系我们”,显示基础联系信息 #}
{% elif articleContent|contain:"联系我们" %}
    <div class="contact-info">
        <h4>联系我们</h4>
        <p>电话:{% contact with name="Cellphone" %}</p>
        <p>邮箱:{% contact with name="Email" %}</p>
    </div>
{% else %}
    <p>如果您有任何疑问,请随时<a href="/contact">联系我们</a>。</p>
{% endif %}

通过这样的组合,您的

相关文章

如何在前台页面展示图片资源的详细信息,如文件名、大小和图片地址?

在使用AnQiCMS管理网站内容时,图片无疑是提升页面吸引力的重要元素。我们经常需要在前端页面不仅展示图片本身,还希望能够进一步展示图片的详细信息,比如它们的文件名、大小和存储地址。这对于访客理解图片背景、进行内容引用,或是对图片进行管理和下载等操作都非常有帮助。 AnQiCMS作为一个高效、灵活的内容管理系统,提供了便捷的图片上传和管理功能

2025-11-09

安企CMS如何在前台页面展示不同用户组的特定内容或会员权限提示?

在网站运营中,针对不同用户群体提供差异化的内容或服务,是提升用户体验、实现内容变现的重要策略。安企CMS(AnQiCMS)深知这一需求,内置了强大的用户组管理和VIP系统,让您能够轻松地在前台页面实现内容的个性化展示和权限控制。 ### 灵活的用户组与权限体系 安企CMS的核心优势之一便是其灵活的用户组与VIP系统。在后台,您可以创建多种用户组,例如“普通用户”、“注册会员”、“VIP会员”

2025-11-09

如何批量重新生成AnqiCMS的缩略图,以适应前台页面新的显示尺寸要求?

网站运营中,图片素材的展示效果至关重要。有时,由于网站模板的更新、设计风格的调整或出于优化性能的考虑,网站前台页面对图片缩略图的显示尺寸会提出新的要求。在这种情况下,如何让安企CMS(AnqiCMS)中已上传的大量图片,能够根据新的尺寸要求生成合适的缩略图,而不是手动一张张处理,就成了许多用户关心的问题。 AnqiCMS充分考虑了内容运营者的实际需求,内置了便捷的缩略图批量处理功能

2025-11-09

AnqiCMS在内容设置中,如何配置图片处理方式(Webp、压缩、缩略图),以优化前台加载速度和显示质量?

在如今内容为王的时代,网站图片的加载速度和显示质量,对用户体验和搜索引擎优化(SEO)都有着举足轻重的影响。一张张精美的图片,若是加载缓慢,或是模糊不清,不仅会劝退访客,更可能影响网站在搜索引擎中的排名。幸运的是,AnqiCMS 提供了一系列强大且灵活的图片处理功能,帮助我们轻松应对这些挑战。 接下来,我们将一起深入了解 AnqiCMS 在内容设置中,如何巧妙配置图片处理方式,包括 WebP

2025-11-09

如何在AnqiCMS模板中截取字符串或HTML内容,并添加省略号以控制显示长度?

在网站运营中,内容的展示方式对用户体验和信息传达效率有着举足轻重的影响。无论是文章列表的简介、产品描述的摘要,还是其他需要预览的文本内容,合理控制其显示长度,并辅以省略号,不仅能保持页面整洁美观,还能引导用户点击查看更多详情。AnqiCMS 作为一个高效灵活的内容管理系统,提供了多种强大的模板标签和过滤器,让内容长度的控制变得异常简单且智能。 ### 为什么需要截取内容并添加省略号

2025-11-09

如何在AnqiCMS模板中将URL字符串自动解析为可点击的a标签,以方便用户浏览?

在运营网站时,我们经常会在文章、产品描述或单页内容里添加一些网址,可能是推荐的外部资源,也可能是站内其他内容的引用。但如果这些网址只是纯文本显示,用户就得复制粘贴才能访问,既不方便,也影响阅读体验。 AnqiCMS 充分考虑到了这一点,为我们提供了非常便捷的方式,可以将内容中的纯文本网址自动转换为可点击的链接,大大提升用户浏览的便利性和网站的专业度。 ### 让内容里的网址自动“活”起来

2025-11-09

AnqiCMS的后台数据统计功能,如何在前台展示流量或爬虫访问数据图表?

了解网站的流量和用户行为,对于运营者来说至关重要。AnqiCMS作为一款高效的企业级内容管理系统,在后台提供了详尽的数据统计和爬虫监控功能。这些数据不仅能帮助我们分析网站表现,优化内容策略,更有潜力通过在前台以图表形式展示,为特定场景的用户或访客提供更直观的信息。 那么,如何将AnqiCMS后台的这些宝贵数据,巧妙地呈现在网站前台,以图表的形式直观展现呢

2025-11-09

如何在AnqiCMS模板中动态获取并显示当前年份或其他时间信息?

在网站运营中,我们经常需要在页面上动态地展示当前的年份、日期或时间,比如页脚的版权信息、文章的发布或更新时间等。这些信息如果手动更新,不仅耗时耗力,还容易出错。幸运的是,AnqiCMS 提供了简洁高效的方法,让您在模板中轻松实现这些动态时间信息的获取和显示。 ### 动态获取并显示当前年份或其他时间信息 在 AnqiCMS 模板中,要获取并显示当前年份或任意格式的当前时间,我们可以使用内置的

2025-11-09