使用织梦自带的“内容摘要”字段(推荐,最安全)
这是织梦官方提供的一个标准做法,也是最安全、最不会出错的方法,它的原理是,在发布文章时,手动填写或自动生成一个干净的内容摘要,然后在列表页和内容页调用这个摘要,而不是调用完整的正文。

(图片来源网络,侵删)
适用场景:主要用于列表页(如首页、栏目页)显示文章简介,不想让复杂的代码或格式影响列表页的美观。
操作步骤:
-
发布文章时:
- 在后台发布或编辑文章时,找到“内容摘要”这个输入框。
- 手动输入一段你希望显示在列表页的文字介绍,这段文字是干净的,没有任何代码。
- 或者,你可以利用织梦的自动摘要功能,在文章编辑框的右上角,通常会有一个“一键生成摘要”的按钮,点击它,织梦会自动从文章正文中提取一部分文字作为摘要(虽然效果不一定完美,但能去除代码)。
-
在模板文件中调用:
(图片来源网络,侵删)- 打开你需要显示文章简介的模板文件,通常是
index.htm(首页),list_article.htm(栏目列表页),article_image.htm(图文列表页) 等。 - 找到原来调用
{dede:field.body/}或{dede:field.content/}的地方,将其替换为调用摘要的字段。
调用代码示例:
{dede:list} <h3><a href="[field:arcurl/]">[field:title/]</a></h3> <!-- 这里调用摘要,而不是正文 --> <p>[field:description function='cn_substr(@me,200)'/]...</p> {/dede:list}[field:description/]就是调用“内容摘要”字段。function='cn_substr(@me,200)'是一个常用函数,表示截取摘要的前200个字符,防止过长,你可以根据需要调整数字。
- 打开你需要显示文章简介的模板文件,通常是
优点:
- 安全:完全不影响文章正文,后台依然保留完整内容。
- 可控完全由你决定,显示效果精准。
缺点:
- 需要额外操作,每次发文都要手动填写或点击生成摘要。
使用PHP函数在模板中过滤(灵活,推荐)
如果你想在页也去除代码,或者想在列表页直接过滤掉正文中的代码,可以使用这个方法,它通过在模板文件里嵌入PHP代码,对 {dede:field.body/} 的内容进行实时过滤。

(图片来源网络,侵删)
适用场景:需要在文章内容页显示干净的正文,或者想在列表页用正文代替摘要但要去掉代码。
操作步骤:
-
打开文章内容页模板:
- 找到你的文章内容页模板文件,通常位于
/templets/你的模板目录/article_article.htm。
- 找到你的文章内容页模板文件,通常位于
-
修改调用正文的代码:
- 找到类似
{dede:field.body/}的代码,将其替换为下面的代码块。
过滤HTML和PHP代码的代码:
{dede:field.body runphp='yes'} // 去除所有HTML和PHP标签 $str = @me; $search = array ("'<script[^>]*?>.*?</script>'si", // 去掉 javascript "'<[\/\!]*?[^<>]*?>'si", // 去掉 HTML 标签 "'([\r\n])[\s]+'", // 去掉空白字符 "'&(quot|#34);'i", // 替换 HTML 实体 "'&(amp|#38);'i", "'&(lt|#60);'i", "'&(gt|#62);'i", "'&(nbsp|#160);'i"); $replace = array ("", "", "\\1", "\"", "&", "<", ">", " "); @me = preg_replace($search, $replace, $str); {/dede:field.body}只过滤特定标签(更常用): 有时候你只想去掉
<script>,<iframe>,<style>等特定标签,而不是所有HTML标签(因为<p>,<br>等格式你还需要),这时可以使用下面的代码:{dede:field.body runphp='yes'} $str = @me; // 定义要移除的标签数组 $patterns = array("/<script[^>]*?>.*?<\/script>/si", "/<iframe[^>]*?>.*?<\/iframe>/si", "/<style[^>]*?>.*?<\/style>/si"); // 执行替换 @me = preg_replace($patterns, '', $str); {/dede:field.body} - 找到类似
-
保存并更新缓存:
- 保存模板文件后,到后台“系统 -> 站点缓存”,点击“更新全部缓存”。
优点:
- 灵活:可以精确控制要去除哪些标签。
- 自动化:无需手动填写,自动过滤。
缺点:
- 如果过滤规则不当,可能会误删掉你需要的格式标签(如
<p>,<img>等)。 - 在模板里写PHP代码,对新手来说有一定门槛。
修改系统文件(全局影响,谨慎使用)
这种方法会从根本上改变织梦处理文章正文的方式,让所有调用 {dede:field.body/} 的地方都自动去除代码。非常强大,但有风险,请务必先备份文件!
适用场景:你希望整个网站的正文内容都默认是干净的,不希望在任何地方出现代码。
操作步骤:
-
备份文件:
- 在进行任何修改前,请务必备份
/include/helpers/archive.helper.php文件。
- 在进行任何修改前,请务必备份
-
修改文件:
- 打开
/include/helpers/archive.helper.php文件。 - 找到
GetBody()函数(大约在第200行左右,不同版本可能略有差异)。 - 在函数内部,找到类似
$body = preg_replace("/\[page\](.*?)\[\/page\]/is", '', $body);这样的代码段。 - 在这一段代码的后面,添加你想要过滤的代码,这里我们以移除特定标签为例。
修改示例(只移除 script, iframe, style 标签):
// 在 archive.helper.php 的 GetBody() 函数中添加如下代码 function GetBody($aid) { // ... 函数原有代码 ... $body = ...; // 这一行是获取正文的代码 // 在这里添加你的过滤代码 $patterns = array("/<script[^>]*?>.*?<\/script>/si", "/<iframe[^>]*?>.*?<\/iframe>/si", "/<style[^>]*?>.*?<\/style>/si"); $body = preg_replace($patterns, '', $body); // ... 函数原有代码 ... return $body; } - 打开
-
保存并更新:
- 保存修改后的
archive.helper.php文件。 - 到后台“系统 -> 站点缓存”,点击“更新全部缓存”。
- 为了确保效果,最好去“内容 -> 普通文章维护”,对几篇已存在的文章执行“更新HTML”操作。
- 保存修改后的
优点:
- 一劳永逸:全局生效,所有调用正文的地方都会自动过滤。
- 代码整洁:逻辑在系统核心文件中,模板文件非常干净。
缺点:
- 风险高:修改核心文件,一旦出错可能导致网站异常。
- 影响全局:所有地方都生效,无法单独控制某个页面的显示方式。
总结与建议
| 方法 | 优点 | 缺点 | 推荐场景 |
|---|---|---|---|
| 内容摘要 | 最安全,不影响正文,可控 | 需要手动操作 | 列表页显示简介的首选方案。 |
| 模板过滤 | 灵活,可精确控制标签,不修改核心文件 | 需要懂一点PHP,可能误删格式 | 页显示干净正文,或列表页需要过滤正文时。 |
| 修改核心文件 | 一劳永逸,全局生效,模板干净 | 风险高,影响所有页面,修改需谨慎 | 确定整个网站都需要统一过滤规则时使用。 |
给新手的建议:
- 如果只是想在首页或栏目页显示简单的文章简介,请优先使用方法一。
- 如果想在文章详情页里把正文里的广告代码(如
<script>)去掉,请使用方法二,这是最常用且最安全灵活的做法。 - 除非你非常确定,否则不要轻易使用方法三。
