修改{dede:field.body/}的正确方法是什么?

99ANYc3cd6
预计阅读时长 22 分钟
位置: 首页 DEDE建站 正文

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

{dede:field.body/修改
(图片来源网络,侵删)

{dede:field.body/} 的基本概念和工作原理

  1. 作用:获取并显示文章在后台编辑器中输入的“正文内容”。
  2. 位置:通常放在文章内容模板(article_article.htm)中,是文章页面的核心。
  3. 数据来源:数据存储在 dede_addonarticledede_archives 表的 body 字段中,当你发布一篇文章时,正文内容就被保存到了这个字段里。
  4. 执行过程
    • 当用户点击一篇文章进入详情页时,Dedecms 会根据文章 ID 查询数据库,获取 body 字段的值。
    • 系统会加载对应的文章内容模板(article_article.htm)。
    • 在模板解析过程中,{dede:field.body/} 标签会被替换为从数据库中读取的实际文章内容。

如何修改 {dede:field.body/} 的行为和样式

{dede:field.body/} 的修改通常分为两大类:后端修改前端修改

(一) 后端修改:通过修改PHP文件实现

这种修改方式更底层,可以实现更复杂的功能,但需要你有一定的PHP代码基础,并且修改后需要重新生成HTML页面才能看到效果。

修改文章内容过滤规则

这是最常见的需求,比如你想自动给文章内容中的图片添加链接、修改图片大小等。

{dede:field.body/修改
(图片来源网络,侵删)
  • 文件位置/include/helpers/archive.helper.php
  • 核心函数ReplaceKeyword($body, $keyid)GetContentImgSource($body, $autolink) 等。

示例:自动给文章内容中的图片添加点击放大效果

这是一个非常经典的需求,你需要修改 archive.helper.php 文件。

  1. 打开 /include/helpers/archive.helper.php
  2. 找到 GetContentImgSource 函数(这个函数用于提取文章内容中的图片)。
  3. 修改函数逻辑,在输出 <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 的部分。

这种方法比较复杂,不推荐新手轻易尝试,容易破坏系统功能。

{dede:field.body/修改
(图片来源网络,侵删)

(二) 前端修改:通过修改模板和CSS实现

这是最安全、最常用的修改方式,主要影响文章内容的显示样式,不改变其核心数据。

直接在标签内添加属性

你可以直接在 {dede:field.body/} 标签内添加一些系统支持的属性。

  • function:调用一个PHP函数对内容进行处理。

    • 示例:移除内容中的HTML标签
      {dede:field.body function='htmlspecialchars(@me)'/}

      这会将所有HTML标签(如 <p>, <img>)转换为HTML实体(如 &lt;p&gt;, &lt;img&gt;),只显示纯文本。

  • style:为整个内容区域添加CSS样式。

    • 示例:设置内容区域的字体和背景色
      <div style="font-family: 'Microsoft YaHei', sans-serif; background-color: #f9f9f9; padding: 20px;">
          {dede:field.body/}
      </div>

使用CSS控制样式(推荐)

这是最佳实践,通过给内容区域添加一个特定的 classid,然后在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) 安全、灵活、即时生效(无需生成)、易于维护 主要控制样式和简单交互,无法改变原始数据 绝大多数场景,如调整字体、颜色、间距、图片样式、添加点击效果等

给新手的建议:

  1. 优先使用CSS:当你只想改变文章内容的显示外观时,强烈建议使用第二种方法(包裹 div + CSS控制),这是最标准、最安全、最易于维护的方式。
  2. 谨慎使用PHP修改:如果你不熟悉PHP,尽量不要去修改 archive.helper.php 这样的核心文件,如果必须修改,请先备份原文件,并在本地测试环境验证无误后再部署到服务器。
  3. 善用开发者工具:使用浏览器(如Chrome、Firefox)的“开发者工具”(F12),可以实时查看和调试文章内容的HTML结构和CSS样式,这能帮助你快速定位问题并进行修改。

希望这份详细的指南能帮助你成功修改 {dede:field.body/}

-- 展开阅读全文 --
头像
HTML5织梦后台模板是否适配高端需求?
« 上一篇 12-01
织梦系统如何有效防会员注册机攻击?
下一篇 » 12-01

相关文章

取消
微信二维码
支付宝二维码

目录[+]