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

📅 👁️ 75

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

那么,在 AnQiCMS 灵活的模板系统中,我们该如何高效地实现这一目标呢? AnQiCMS 提供了功能强大的过滤器,其中 striptagsremovetags 就是解决这一问题的利器。

认识核心工具:striptags 过滤器

striptags 过滤器是 AnQiCMS 模板中一个非常实用的功能,它的作用正如其名——“剥离标签”。当您想从一段包含 HTML 标签的内容中,一次性移除所有 HTML 或 XML 标签,只保留其中文字时,striptags 就能派上用场。

它的使用方法非常直观,只需在您要处理的变量后面,通过管道符 | 连接 striptags 即可。例如,如果您有一个名为 archive.Content 的变量,其中存储了带有 HTML 格式的文章正文,您可以这样获取其纯文本内容:

{{ archive.Content | striptags }}

这段简单的代码会遍历 archive.Content 中的所有内容,识别并移除所有的 <div><p><a><img> 等 HTML 标签,最终只输出其中的可见文字。

处理 Markdown 内容的场景

值得注意的是,AnQiCMS 后台在编辑文档内容时,可能启用了 Markdown 编辑器。在这种情况下,archive.Content 变量中存储的可能是 Markdown 格式的文本,而非直接的 HTML。如果直接对 Markdown 文本使用 striptags,效果可能不尽如人意,因为它无法识别 Markdown 语法并将其转换为对应的纯文本。

此时,我们就需要先借助 render 过滤器,将 Markdown 文本渲染成 HTML,然后再使用 striptags 移除 HTML 标签。render 过滤器能够将 Markdown 语法正确地转换为浏览器可识别的 HTML 结构。因此,完整的处理流程会是这样:

{# 假设 archive.Content 变量中存储的是 Markdown 格式的内容 #}
{{ archive.Content | render | striptags }}

通过 render 过滤器,Markdown 内容被转换为 HTML,然后 striptags 再将这些 HTML 标签移除,确保最终输出的是纯文本。需要注意的是,render 过滤器输出的是HTML,如果直接显示到页面,为了避免浏览器转义HTML标签而导致HTML标签直接显示出来,需要在 render 过滤器后追加 safe 过滤器。但在与 striptags 结合使用时,由于 striptags 最终会去除所有 HTML,所以 safe 并非必需,因为它处理的最终结果就是纯文本。

灵活控制:removetags 过滤器

有时候,我们的需求可能更为精细:我们不希望移除所有 HTML 标签,而是只想移除特定的几种,而保留其他标签(比如,我们想保留 <a> 标签以便用户可以点击链接,但移除所有图片 <img> 或段落 <p> 标签)。这时,removetags 过滤器就显得尤为强大。

removetags 过滤器允许您指定一个或多个要移除的 HTML 标签。您只需在过滤器后面提供一个逗号分隔的标签名称列表即可。例如,如果您想移除 <i><span> 标签,但保留其他所有内容,您可以这样编写:

{# 移除 <i> 和 <span> 标签,保留其他所有标签 #}
{{ "<strong><i>Hello!</i><span>AnQiCMS</span></strong>" | removetags:"i,span" }}

这段代码会输出 <strong>Hello!AnQiCMS</strong>,可以看到 <i><span> 标签被移除了,而 <strong> 标签得以保留。这种精细的控制在内容展示的特定场景下提供了极大的灵活性。

结合截取功能生成纯文本摘要

在生成文章摘要或简介时,我们不仅需要纯文本,还需要控制其长度。AnQiCMS 提供了 truncatecharstruncatewords 过滤器,它们可以在截取字符串的同时,自动添加省略号 (...)。当与 striptags 结合使用时,可以轻松生成符合需求的纯文本摘要:

{# 获取纯文本内容,并截取前100个字符作为摘要 #}
<p>{{ archive.Content | render | striptags | truncatechars:100 }}</p>

{# 或者,按单词数量截取 #}
<p>{{ archive.Content | render | striptags | truncatewords:30 }}</p>

请注意,truncatechars 会按字符数截取(包括中文一个字符),而 truncatewords 会按单词数截取。根据您的具体需求和内容特性,选择合适的截取方式。

实践建议

在 AnQiCMS 模板中移除 HTML 标签,只显示纯文本内容,主要围绕 striptagsremovetags 两个过滤器展开。在实际应用中,您需要:

  1. 确定内容来源:判断 archive.Content 等变量中存储的内容是纯 HTML 还是 Markdown。如果是 Markdown,务必先使用 render 过滤器进行转换。
  2. 选择合适的过滤器:根据是需要完全移除所有标签(striptags),还是只移除部分标签(removetags),来选择最合适的过滤器。
  3. 考虑摘要长度:如果用于生成摘要,结合 truncatecharstruncatewords 确保输出内容的简洁性。
  4. SEO 优化:在 <meta name="description" content="..."> 标签中使用 striptags 确保纯文本输出,这对搜索引擎友好。

AnQiCMS 提供的这些过滤器让模板设计者能够灵活地控制内容的呈现方式,满足从完整富文本展示到简洁纯文本输出的各种需求,从而构建出更具表现力和功能性的网站。


常见问题 (FAQ)

1. striptagsremovetags 过滤器有什么主要区别?

striptags 过滤器会移除内容中所有检测到的 HTML 和 XML 标签,不留任何余地,直接输出纯文本。而 removetags 过滤器则提供更精细的控制,它允许您指定一个或多个要移除的特定 HTML 标签(例如 <img><p>),而其他未指定的 HTML 标签则会保留在内容中。选择哪个过滤器取决于您是想完全移除所有格式,还是有选择性地保留某些格式。

2. 在生成文章摘要时,如何确保纯文本内容的长度合适?

在获取纯文本内容后,可以结合 truncatecharstruncatewords 过滤器来控制长度。首先使用 render (如果内容是 Markdown) 和 striptags 移除 HTML 标签,然后再应用截取过滤器。例如,{{ archive.Content | render | striptags | truncatechars:150 }} 会将内容转换为纯文本后,截取前 150 个字符并添加省略号。truncatewords 则是按单词数量进行截取。

3. 使用 striptags 过滤器输出纯文本内容会影响网站的搜索引擎优化(SEO)吗?

这取决于您在何处使用纯文本。在某些场景下,使用纯文本对 SEO 是有利的。例如,网站的 <meta name="description"> 标签应该只包含纯文本,因为搜索引擎通常只会抓取并展示纯文本的描述。在列表页显示文章摘要时,纯文本也有助于搜索引擎更快地理解内容。但请注意,不应将所有主要内容都转换为纯文本,因为搜索引擎也需要解析 HTML 结构来理解页面布局和内容重点。**实践是在需要简洁、无格式展示的区域使用纯文本,而在主要内容区域保持丰富的 HTML 格式。

相关文章

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

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

2025-11-09

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

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

2025-11-09

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

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

2025-11-09

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

在网站运营中,我们经常会遇到这样的需求:根据网页内容的特定信息,动态地调整内容的展示方式。比如,如果一篇文章标题中包含了“促销”或“活动”等关键词,我们可能希望它自动显示一个醒目的标签;或者,为了内容审核和用户体验,需要检查文章中是否存在某些敏感词汇,并据此进行相应的处理。 安企CMS作为一个功能强大且灵活的内容管理系统,提供了直观的模板标签和过滤器,让这些动态判断和展示变得非常简单

2025-11-09

AnQiCMS中如何自动识别文本中的URL并将其转换为可点击的`<a>`标签?

在内容管理和网站运营中,我们经常需要将文本中的网址链接转化为可点击的超链接,以便用户能直接跳转访问。手动操作不仅效率低下,还容易遗漏,尤其是在内容量庞大的网站上。安企CMS深知这一痛点,提供了一种优雅且高效的解决方案,让我们能够轻松实现文本中URL的自动识别与转换。 要让安企CMS自动识别文本中的URL并将其转换为可点击的`<a>`标签,我们主要会用到它强大的模板过滤器功能。具体来说

2025-11-09

`urlize`过滤器在AnQiCMS模板中的核心功能是什么?

在AnQiCMS的模板开发中,处理内容中的链接是一个常见且重要的环节。`urlize`过滤器就是为了解决这一需求而生,它能极大地简化模板中链接的识别和格式化工作,同时兼顾了用户体验和搜索引擎优化。 ### `urlize`过滤器在AnQiCMS模板中的核心功能 `urlize`过滤器的核心作用在于,它能够智能地识别一段纯文本内容中包含的网址(URL)和电子邮件地址

2025-11-09

如何在AnQiCMS文章详情内容中,批量将URL字符串解析成可点击链接?

在日常的网站内容运营中,我们经常需要在文章详情页中展示包含URL地址的文本内容,例如引用来源、推荐链接等。如果这些URL字符串不能自动解析为可点击的超链接,用户就无法直接跳转,这不仅影响了用户体验,也降低了内容的可读性和便捷性。安企CMS(AnQiCMS)充分考虑到了这一需求,通过内置的模板过滤器功能,可以轻松实现将文章详情内容中的URL字符串批量解析成可点击的链接

2025-11-09

`urlize`过滤器是否支持将邮件地址(如`demo@example.com`)解析成`mailto:`链接?

在管理网站内容时,我们常常需要将文本中的网址或电子邮件地址转换为可点击的链接。手动逐一添加 HTML 标签既耗时又容易出错,尤其是在处理大量内容时。因此,一个高效的内容管理系统能否提供智能化的链接解析功能,对于内容运营效率至关重要。 AnQiCMS 作为一个专为中小企业和内容运营团队设计的内容管理系统,深知这类需求的重要性。它在模板引擎中内置了许多实用工具来简化这项工作,其中 `urlize`

2025-11-09