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

📅 👁️ 56

在使用AnQiCMS进行内容创作与展示时,我们常常需要灵活控制内容在前端的呈现方式。有时候,文章或产品描述中可能包含丰富的HTML标签,这些标签是为了在详情页提供精美的排版。然而,在其他一些场景,比如在列表页显示内容摘要、作为SEO描述(meta description)输出,或者仅仅是为了在某些特定UI元素中避免样式冲突,我们可能只需要内容的纯文本形式,而不需要任何HTML标签。

AnQiCMS的模板系统基于Django模板引擎语法,提供了强大的过滤器功能,可以帮助我们轻松实现这一目标。它内置了多种过滤器,能对变量的内容进行处理,其中就有专门用于移除HTML标签的工具。

要让模板中的内容只显示纯文本,核心在于使用合适的过滤器来“剥离”HTML标签。这里主要会用到两个非常实用的过滤器:striptagsremovetags

彻底剥离所有HTML标签:使用 striptags 过滤器

striptags 过滤器是你的首选,如果你希望从内容中彻底移除所有HTML标签,只保留纯粹的文本信息。它的使用方式非常简单直观,就像给一段文字“剥去”所有带有格式的外壳一样。

例如,你的文章详情变量 archive.Content 或者描述变量 archive.Description 可能包含了 <p><strong><a> 等标签,如果你直接在模板中输出 {{ archive.Description }},AnQiCMS出于安全考虑会默认对HTML标签进行转义,将 <p> 显示为 &lt;p&gt;,用户会看到原始的HTML代码而不是渲染后的效果。而如果你使用 {{ archive.Description|safe }},标签则会被浏览器正常解析并渲染。

但是,当你的目标是纯文本时,你可以这样使用 striptags

{# 假设archive.Description内容为:<p>这是一段<b>带有</b>HTML标签的描述。</p> #}
<p>文章摘要:{{ archive.Description|striptags }}</p>

{# 假设archive.Content内容包含大量HTML排版 #}
<div class="summary-text">
    {{ archive.Content|striptags }}
</div>

经过 |striptags 过滤器的处理后,无论 archive.Descriptionarchive.Content 原本包含多么复杂的HTML结构,输出的都将是像“这是一段带有HTML标签的描述。”这样的纯文本,所有的HTML标签都会被干净地移除。

选择性移除HTML标签:使用 removetags 过滤器

在某些更精细的场景下,你可能不想移除所有HTML标签,而是希望保留部分特定的标签,例如只保留 <strong> 标签以强调关键词,而移除其他所有标签。这时,removetags 过滤器就派上用场了。

removetags 允许你指定一个或多个HTML标签名(用逗号分隔),它会精确地移除这些被指定的标签,而保留其他未被指定的标签。

使用方式如下:

{# 假设articleContent内容为:<p>欢迎<b>使用</b><i>AnQiCMS</i>的<strong>强大功能</strong>。</p> #}
{# 我们只希望移除 <p>、<i> 标签,保留 <b> 和 <strong> #}
<div class="partially-formatted-text">
    {{ articleContent|removetags:"p,i"|safe }}
</div>

在上面的例子中,输出的内容将会是“欢迎使用AnQiCMS的强大功能。”。可以看到,<i> 标签被移除了,而 <b><strong> 标签则被保留了下来。需要注意的是,如果你希望保留的标签能够被浏览器正常渲染,而不是显示为原始的HTML代码,那么在 removetags 之后,通常还需要加上 |safe 过滤器。

实际应用建议

  • 列表页摘要与SEO描述: 这是最常见的纯文本需求场景。在显示文章列表或产品列表时,通常会展示一个简短的摘要。此时,使用 |striptags 确保输出的都是纯文本,避免HTML标签破坏页面布局或影响SEO工具的抓取。
  • 前端JS操作内容: 如果你需要通过JavaScript获取DOM元素的innerText或者textContent,那么在后端模板层面就提供纯文本内容,可以简化前端脚本的编写。
  • 富文本与纯文本共存: 在文章详情页,你仍然可以使用 {{ archive.Content|safe }} 来渲染完整的HTML内容;而在同一页面的侧边栏或Meta信息区域,则可以使用 {{ archive.Description|striptags }} 来获取纯文本摘要。

AnQiCMS的这些过滤器为内容展示提供了极大的灵活性,让我们可以根据不同的需求,精准地控制内容的呈现形式,从而打造出更专业、更友好的网站用户体验。


常见问题 (FAQ)

  1. |striptags|safe 过滤器有什么区别? |striptags 过滤器的作用是从内容中移除所有HTML标签,留下纯文本。而 |safe 过滤器的作用是告诉AnQiCMS模板引擎,这段内容是安全的,不需要进行HTML实体转义,可以直接作为HTML代码渲染到页面上。简单来说,striptags 剥离HTML,safe 允许HTML被渲染。如果你想显示原始内容中的HTML,就用 |safe;如果你想移除所有HTML只留纯文本,就用 |striptags

  2. |striptags 会不会移除所有格式,包括换行符? |striptags 主要针对HTML标签进行移除,它通常不会移除文本内容中的自然换行符(\n)。如果你想将这些换行符也转换成HTML的 <br> 标签,可以先用 |striptags 移除HTML标签,然后再使用 |linebreaksbr|linebreaks 过滤器。例如:{{ archive.Content|striptags|linebreaksbr }}

  3. 如果我只想保留特定的HTML标签,但也要确保最终是纯文本,该怎么操作? 如果你希望保留比如 <strong><em> 这样的强调标签,但又不想它们以HTML形式展示,而是以纯文本中的特殊字符(例如星号或下划线)来表示,那么 removetags 可能不是**选择。removetags 会保留指定的HTML标签。若要将这些标签转换为纯文本的语义表达,通常需要在后端(内容编辑时)或通过更复杂的模板逻辑(如正则表达式匹配替换)来实现,而不是单纯依赖这两个标签剥离过滤器。如果最终目标是纯文本,即使保留了部分标签,也应该使用 striptags 来确保最终输出的是不含任何标签的纯文本。

相关文章

AnQiCMS如何将文章内容中的图片自动加上水印以保护版权?

在数字内容日益丰富的今天,原创图片的版权保护变得尤为重要。无论是精心拍摄的产品图,还是为文章绘制的插画,它们都凝聚着创作者的心血和网站的品牌形象。然而,图片被未经授权转载、盗用的情况屡见不鲜,这不仅侵犯了版权,也可能稀释品牌影响力。幸运的是,AnQiCMS 提供了一套便捷高效的解决方案,帮助我们自动为网站上的图片添加水印,从而有效保护原创内容。 AnQiCMS

2025-11-07

如何在AnQiCMS模板中对数字进行格式化显示,例如保留小数位数?

在AnQiCMS的模板开发中,对数字进行格式化显示,尤其是控制小数位数,是一个非常常见的需求。无论您是要展示商品的价格、统计数据中的百分比,还是其他需要精确呈现的数值,AnQiCMS强大的模板引擎都提供了灵活的过滤器(filters)来帮助您实现这些目标。 AnQiCMS的模板语法类似Django,变量通常通过双花括号 `{{ 变量 }}` 来输出,而过滤器则通过管道符 `|` 应用于变量之后

2025-11-07

AnQiCMS如何实现分类或文章详情页的自定义模板文件调用?

在使用AnQiCMS搭建网站的过程中,我们经常会遇到这样的需求:希望某个特定的分类列表页,或者某篇独特的文章详情页,拥有与众不同的布局和样式,而不是沿用全局统一的默认模板。AnQiCMS作为一个专注于灵活性和可定制性的内容管理系统,在这方面提供了非常便捷和强大的解决方案,让我们能够轻松实现这种精细化的模板调用。 实现分类或文章详情页的自定义模板调用,AnQiCMS主要提供了两种主要方式

2025-11-07

如何在模板中判断变量是否为空,并显示默认值?

在网站内容的呈现过程中,我们常常会遇到这样的情况:某个变量可能因为数据缺失、用户未填写或者其他原因而导致其值为空。如果直接在模板中输出这些空变量,轻则页面上出现空白,影响美观,重则导致布局错乱,甚至可能暴露不必要的调试信息。为了确保网站内容展示的完整性和用户体验的流畅性,为这些可能为空的变量设定一个合适的默认值就显得尤为重要。 安企CMS采用类似Django的模板引擎语法

2025-11-07

AnQiCMS如何显示当前模型的名称或URL别名?

在网站内容管理中,我们经常需要让网站的各个部分都能够智能地适应和展示信息,其中一个常见的需求就是如何在前端页面动态地显示当前内容模型的名称或者其URL别名。这对于提升用户体验、优化搜索引擎表现以及灵活管理网站结构都至关重要。AnQiCMS作为一个专注于企业级内容管理的系统,提供了非常灵活且强大的模板标签功能,使得实现这一目标变得直观且高效。 ###

2025-11-07

如何在文章详情页显示文章内容的内部标题(H1, H2等)列表?

在安企CMS中,为了提升长篇文章的阅读体验和页面SEO效果,我们通常希望能在文章详情页的侧边或文章内容上方,展示一个内部标题(H1、H2等)的列表,也就是我们常说的文章目录或导航。这不仅方便读者快速跳转到感兴趣的章节,也让搜索引擎更好地理解文章结构。 安企CMS提供了非常便捷的方式来实现这一功能,核心在于其强大的模板标签和内容字段提取能力。 ###

2025-11-07

AnQiCMS如何实现关键词的批量替换,并影响前端内容显示?

在网站运营中,保持内容的准确性、时效性及品牌一致性至关重要。尤其是当网站内容量庞大时,若需对特定关键词或短语进行全局性修改,手动操作将是一项耗时耗力的巨大工程。AnQiCMS(安企CMS)正是洞察到这一需求,提供了一项名为“全站内容替换”的强大功能,帮助用户高效管理和更新网站内容,进而影响前端内容的显示效果。 ### 为什么需要批量替换关键词? 随着企业发展、产品更新或市场策略调整

2025-11-07

如何确保AnQiCMS后台设置的自定义参数能在前端模板中显示?

安企CMS赋予了内容管理极高的灵活性,其中自定义参数功能更是满足个性化内容展示需求的关键。当您在后台为文章、产品或分类等内容模型设置了独有的参数后,如何将这些参数准确无误地呈现在网站前台模板中,是许多用户关心的问题。这篇文章将详细阐述这一过程,帮助您充分利用安企CMS的强大定制能力。 ### 了解自定义参数的奥秘 首先,要确保自定义参数能在前端模板中显示

2025-11-07