这个功能在织梦后台通常被称为 “把HTML保存为纯文本” 或 “获取摘要”,是织梦一个非常核心且实用的功能。

什么是 html2text?
html2text 的字面意思是 "HTML to Text",即 将 HTML 格式的代码转换成纯文本格式。
管理中,这意味着:
- 输入:一篇完整的文章内容,可能包含
<p>段落、<img>图片、<h1>标题、<strong>加粗、<a>链接等复杂的 HTML 标签。 - 输出:不包含任何 HTML 标签的、干净的纯文本字符串。
举个例子:
- HTML 输入:
<h2>欢迎来到我的网站</h2> <p>这是一段<strong>非常重要</strong>的文字,<a href="https://www.example.com">点击这里</a>可以了解更多。</p> <img src="image.jpg" alt="一张图片">
- Text 输出:
欢迎来到我的网站 这是一段非常重要的文字,点击这里可以了解更多。
在织梦CMS中,html2text 主要用在哪些地方?
织梦的 html2text 功能并非一个独立的工具,而是深度集成在多个核心功能模块中,主要用于自动生成摘要和规范数据。
摘要 (最核心的用途)
这是 html2text 最常见的应用场景,当你在发布一篇文章时:
-
description(文章简介):- 作用:用于 SEO 优化,是搜索引擎在搜索结果页展示的描述文字,也是
<meta name="description" content="...">标签的内容。 - 织梦逻辑:如果你没有手动填写文章简介,织梦会自动调用
html2text函数,截取文章正文的前 N 个字符(通常是 200 字)作为description,这个过程会先去除所有 HTML 标签,再进行截断,确保生成的摘要干净、规范。
- 作用:用于 SEO 优化,是搜索引擎在搜索结果页展示的描述文字,也是
-
keywords(文章关键词):- 作用:用于 SEO 优化,告诉搜索引擎这篇文章的核心主题是什么。
- 织梦逻辑:织梦可以通过
html2text处理后的纯文本来提取关键词,虽然织梦的关键词更多是依赖手动填写,但底层的数据处理也离不开文本的纯净。
栏目简介
在创建或编辑栏目时,栏目简介字段也支持 HTML 编辑器,但最终存储到数据库并用于列表页或内容页调用时,织梦同样会使用 html2text 来确保简介是纯文本,避免意外的 HTML 标签破坏页面布局。
自定义模型字段
当你创建自定义模型(下载软件、产品介绍)时,可以添加多种字段类型,其中一种就是 “文本area” 或 “编辑器” 类型的字段,这些字段存储的内容如果需要在列表页等地方以摘要形式展示,织梦的模板标签(如 [field:字段名 function='html2text(@me)'/])就会调用此功能。
模板标签调用
在织梦的模板文件(.htm)中,你可以手动使用 function 修饰符来对任意字段进行 html2text 处理。
语法示例:
{dede:field.body function='html2text(@me)'/}
这段代码的意思是:获取 body 字段(文章正文)的内容,并使用 html2text 函数将其转换为纯文本后显示。
如何使用 html2text?
使用方式分为两种:后台自动使用 和 前台手动调用。
后台自动使用(无需手动干预)
这是最常见的情况,你只需要:
- 正常使用编辑器编写文章内容。
- 在文章的“和“关键词”部分,如果留空,织梦系统会在保存文章时自动处理。
- 在“高级选项”中,你可以设置摘要的长度,这个长度就是
html2text截取文本的长度。
优点:完全自动化,对用户非常友好。
前台模板手动调用
当你需要在模板的某个特定位置,显示一段经过处理的纯文本摘要时,就需要手动调用。
场景:在文章列表页,你希望在标题和日期下方显示一段 100 字的正文摘要,但又不希望出现任何 HTML 标签。
示例代码 (list_article.htm):
{dede:list pagesize='10'}
<li>
<h3><a href="[field:arcurl/]">[field:title/]</a></h3>
<!-- 手动调用 html2text,截取前100个字符作为摘要 -->
<p class="summary">
[field:description function='html2text(@me)'/]
<!-- 如果系统自动生成的摘要为空,则从正文中截取 -->
<span>
[field:body function='cn_substr(html2text(@me), 100)'/]
</span>
</p>
<span class="date">[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
</li>
{/dede:list}
代码解析:
[field:description function='html2text(@me)'/]:直接调用系统自动生成的description,并用html2text再次处理(虽然它已经是纯文本,但这样写更严谨)。[field:body function='cn_substr(html2text(@me), 100)'/]:这是一个更强大的组合。@me:代表当前字段的原始值,即[field:body]的内容(带 HTML 标签的正文)。html2text(@me):将原始正文转换为纯文本。cn_substr(..., 100):是织梦的另一个常用函数,作用是“截取字符串前 N 个字符”,这里它截取经过html2text处理后的前 100 个字符。
html2text 的局限性
虽然 html2text 很有用,但它也有一些需要注意的地方:
- 会丢失所有格式:它只关心文本内容,会完全移除加粗、斜体、颜色、换行、列表等所有 HTML 格式,如果摘要中需要保留这些格式的视觉提示(比如用 表示加粗),它无能为力。
- 可能截断不完整:如果正好截断在一个词语的中间,可能会产生不自然的阅读体验。
- 不处理图片:默认情况下,
html2text会直接忽略<img>标签及其alt文本,但织梦通常有专门的标签[field:image/]来处理图片,所以这通常不是问题。
html2text 是织梦 CMS 一个基础但至关重要的底层功能,它像一个“净化器”,确保了从数据库中读取并用于展示(尤其是摘要、SEO、列表页)的内容是干净、规范、可读的纯文本,对于用户来说,大部分时间是“无感”的,系统在后台自动完成;但对于需要精细控制模板显示的开发者来说,掌握其在模板中的手动调用方法,能极大地提升网站的灵活性和用户体验。
