{dede:field.body/} 是 Dedecms (织梦CMS) 中最核心、最常用的一个标签,它的作用非常明确:在模板中输出当前文档(文章、图集等)的内容主体部分。

{dede:field.body/} 的基本概念和工作原理
- 作用:获取并显示文章在后台编辑器中输入的“正文内容”。
- 位置:通常放在文章内容模板(
article_article.htm)中,是文章页面的核心。 - 数据来源:数据存储在
dede_addonarticle或dede_archives表的body字段中,当你发布一篇文章时,正文内容就被保存到了这个字段里。 - 执行过程:
- 当用户点击一篇文章进入详情页时,Dedecms 会根据文章 ID 查询数据库,获取
body字段的值。 - 系统会加载对应的文章内容模板(
article_article.htm)。 - 在模板解析过程中,
{dede:field.body/}标签会被替换为从数据库中读取的实际文章内容。
- 当用户点击一篇文章进入详情页时,Dedecms 会根据文章 ID 查询数据库,获取
如何修改 {dede:field.body/} 的行为和样式
对 {dede:field.body/} 的修改通常分为两大类:后端修改和前端修改。
(一) 后端修改:通过修改PHP文件实现
这种修改方式更底层,可以实现更复杂的功能,但需要你有一定的PHP代码基础,并且修改后需要重新生成HTML页面才能看到效果。
修改文章内容过滤规则
这是最常见的需求,比如你想自动给文章内容中的图片添加链接、修改图片大小等。

- 文件位置:
/include/helpers/archive.helper.php - 核心函数:
ReplaceKeyword($body, $keyid)和GetContentImgSource($body, $autolink)等。
示例:自动给文章内容中的图片添加点击放大效果
这是一个非常经典的需求,你需要修改 archive.helper.php 文件。
- 打开
/include/helpers/archive.helper.php。 - 找到
GetContentImgSource函数(这个函数用于提取文章内容中的图片)。 - 修改函数逻辑,在输出
<img>标签时,为其包裹一个<a>标签,并添加相应的CSS类或JavaScript事件。
// 这是一个简化的修改思路,实际代码会更复杂 // 在 GetContentImgSource 函数中,找到生成 $imgHTML 的部分 // 原始代码可能类似: // $imgHTML = "<img src='".$rs[0]."' width='".$imgwidth."' height='".$imgheight."' alt='".$alt."' style='max-width:100%;height:auto;' />"; // 修改为类似这样: $imgHTML = "<a href='".$rs[0]."' class='highslide' onclick='return hs.expand(this)'><img src='".$rs[0]."' width='".$imgwidth."' height='".$imgheight."' alt='".$alt."' style='max-width:100%;height:auto;' /></a>"; // 确保你的模板中引入了 Highslide 的JS和CSS文件 // 在模板的 <head> 部分添加: // <link rel="stylesheet" type="text/css" href="/highslide/highslide.css" /> // <script type="text/javascript" src="/highslide/highslide.js"></script> // <script type="text/javascript">hs.graphicsDir = '/highslide/graphics/';</script>
输出前的处理
输出前进行一些自定义处理,可以找到调用 {dede:field.body/} 的PHP代码。
- 文件位置:
/arc.archives.class.php - 核心函数:
MakeHtml()或ParseDM()等函数中处理body的部分。
这种方法比较复杂,不推荐新手轻易尝试,容易破坏系统功能。

(二) 前端修改:通过修改模板和CSS实现
这是最安全、最常用的修改方式,主要影响文章内容的显示样式,不改变其核心数据。
直接在标签内添加属性
你可以直接在 {dede:field.body/} 标签内添加一些系统支持的属性。
-
function:调用一个PHP函数对内容进行处理。- 示例:移除内容中的HTML标签
{dede:field.body function='htmlspecialchars(@me)'/}这会将所有HTML标签(如
<p>,<img>)转换为HTML实体(如<p>,<img>),只显示纯文本。
- 示例:移除内容中的HTML标签
-
style:为整个内容区域添加CSS样式。- 示例:设置内容区域的字体和背景色
<div style="font-family: 'Microsoft YaHei', sans-serif; background-color: #f9f9f9; padding: 20px;"> {dede:field.body/} </div>
- 示例:设置内容区域的字体和背景色
使用CSS控制样式(推荐)
这是最佳实践,通过给内容区域添加一个特定的 class 或 id,然后在CSS文件中精确控制其样式。
-
在模板中给内容区域包裹一个
div并添加class打开你的文章内容模板文件(通常是
/templets/default/article_article.htm),找到{dede:field.body/},用div包裹起来。<article class="article-content"> <h1>{dede:field.title/}</h1> <div class="article-info">...</div> <!-- 修改从这里开始 --> <div class="post-body"> {dede:field.body/} </div> <!-- 修改结束 --> <div class="share-box">...</div> </article> -
在CSS文件中编写样式
打开你的CSS文件(通常是
/templets/default/style/dedecms.css或/templets/default/style.css),添加针对.post-body的样式。/* 文章内容区域样式 */ .post-body { font-size: 16px; line-height: 1.8; /* 行高,提升阅读体验 */ color: #333; text-align: justify; /* 两端对齐 */ padding: 20px 0; } /* 文章内容中的段落样式 */ .post-body p { margin-bottom: 1em; /* 段落间距 */ text-indent: 2em; /* 段首缩进 */ } /* 文章内容中的图片样式 */ .post-body img { max-width: 100%; /* 图片最大宽度为容器宽度,防止溢出 */ height: auto; /* 高度自动,保持图片比例 */ display: block; /* 避免图片下方有空隙 */ margin: 15px auto; /* 图片居中,并添加上下间距 */ border: 1px solid #eee; /* 添加一个细边框 */ border-radius: 4px; /* 圆角边框 */ box-shadow: 0 2px 5px rgba(0,0,0,0.1); /* 添加轻微阴影 */ } /* 文章内容中的超链接样式 */ .post-body a { color: #0066cc; text-decoration: none; } .post-body a:hover { text-decoration: underline; } /* 文章内容中的表格样式 */ .post-body table { width: 100%; border-collapse: collapse; margin: 15px 0; } .post-body th, .post-body td { border: 1px solid #ddd; padding: 8px 12px; text-align: left; } .post-body th { background-color: #f2f2f2; font-weight: bold; }
使用JavaScript增强交互
你可以在模板中引入JavaScript文件,然后通过JS来操作文章内容。
-
示例:自动为文章内容中的所有外部链接添加
target="_blank"在模板的
</body>标签前添加如下JS代码:<script> document.addEventListener('DOMContentLoaded', function() { var postBody = document.querySelector('.post-body'); if (postBody) { var links = postBody.querySelectorAll('a'); links.forEach(function(link) { // 如果链接不是本站的,就在新窗口打开 if (link.hostname !== window.location.hostname) { link.target = '_blank'; link.rel = 'noopener noreferrer'; // 安全考虑 } }); } }); </script>
总结与建议
| 修改方式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 后端修改 (PHP) | 功能强大,可以深度处理内容 | 风险高,需要PHP基础,修改后需生成HTML | 自动化处理(如图片统一加水印、自动摘要)、复杂的数据过滤 |
| 前端修改 (CSS/JS) | 安全、灵活、即时生效(无需生成)、易于维护 | 主要控制样式和简单交互,无法改变原始数据 | 绝大多数场景,如调整字体、颜色、间距、图片样式、添加点击效果等 |
给新手的建议:
- 优先使用CSS:当你只想改变文章内容的显示外观时,强烈建议使用第二种方法(包裹
div+ CSS控制),这是最标准、最安全、最易于维护的方式。 - 谨慎使用PHP修改:如果你不熟悉PHP,尽量不要去修改
archive.helper.php这样的核心文件,如果必须修改,请先备份原文件,并在本地测试环境验证无误后再部署到服务器。 - 善用开发者工具:使用浏览器(如Chrome、Firefox)的“开发者工具”(F12),可以实时查看和调试文章内容的HTML结构和CSS样式,这能帮助你快速定位问题并进行修改。
希望这份详细的指南能帮助你成功修改 {dede:field.body/}!
