在安企CMS中管理内容时,我们经常会利用Markdown编辑器方便地编写文章。Markdown的强大之处在于它能将简洁的纯文本格式转换为丰富的HTML结构,这为内容的样式和表现力带来了极大的便利。但有时,我们并不需要或不希望这些HTML标签完全呈现在最终的页面上。比如,我们可能只想提取文章的纯文本摘要,用于首页列表展示、SEO描述,或者在其他需要特定格式的场景下,希望移除某些特定的标签。

幸运的是,安企CMS的模板系统提供了非常灵活且强大的过滤器(Filters)功能,可以帮助我们轻松实现从Markdown渲染的HTML内容中移除所有或指定HTML标签的需求。

理解内容渲染与标签移除的背景

当我们通过Markdown编辑器输入内容并保存后,安企CMS会在后台将其转换为HTML格式存储或在模板渲染时进行实时转换。这意味着,即便你输入的是Markdown语法,最终在页面上呈现的通常也是包含ph1strongemaimg等标签的HTML内容。

我们的目标,就是在模板输出这些HTML内容时,对其进行“清洗”,根据不同的需求,选择性地移除标签。

移除所有HTML标签:使用 striptags 过滤器

假设我们想从一篇文章的完整内容中,提取出纯粹的文本,不含任何加粗、斜体、链接、图片等HTML元素。这时候,striptags过滤器就是我们的好帮手。

当我们在模板中获取到文章内容字段(例如archive.Content,它通常是Markdown渲染后的HTML内容)时,只需要简单地在其后面加上|striptags过滤器,系统就会自动将内容中的所有HTML标签剥离掉,只留下纯文本。

安企CMS的模板系统在输出内容时,为了安全会默认对HTML标签进行转义(比如把<变成&lt;),以防止潜在的XSS攻击。当我们需要操作实际的HTML结构时,比如移除标签,通常会在内容变量后面加上|safe过滤器,告诉系统这段内容是安全的HTML,不需要转义,可以直接进行操作。因此,常用的写法会是:

{{ archive.Content|safe|striptags }}

这样,striptags就能处理真正的HTML标签,并返回纯文本。

移除特定HTML标签:使用 removetags 过滤器

有时候,我们可能不希望移除所有标签,而是有选择性地保留某些标签,只移除特定的标签。例如,我们可能想保留段落标签<p>和换行标签<br>,但移除所有的图片标签<img>、链接标签<a>和加粗标签<strong>

removetags过滤器可以精确地删除我们指定的HTML标签。只需要将要移除的标签名(不带尖括号)