织梦如何彻底清除文章中的冗余代码?

99ANYc3cd6
预计阅读时长 17 分钟
位置: 首页 织梦建站 正文

使用织梦自带的“内容摘要”字段(推荐,最安全)

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

织梦去除文章中的代码
(图片来源网络,侵删)

适用场景:主要用于列表页(如首页、栏目页)显示文章简介,不想让复杂的代码或格式影响列表页的美观。

操作步骤

  1. 发布文章时

    • 在后台发布或编辑文章时,找到“内容摘要”这个输入框。
    • 手动输入一段你希望显示在列表页的文字介绍,这段文字是干净的,没有任何代码。
    • 或者,你可以利用织梦的自动摘要功能,在文章编辑框的右上角,通常会有一个“一键生成摘要”的按钮,点击它,织梦会自动从文章正文中提取一部分文字作为摘要(虽然效果不一定完美,但能去除代码)。
  2. 在模板文件中调用

    织梦去除文章中的代码
    (图片来源网络,侵删)
    • 打开你需要显示文章简介的模板文件,通常是 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/} 的内容进行实时过滤。

织梦去除文章中的代码
(图片来源网络,侵删)

适用场景:需要在文章内容页显示干净的正文,或者想在列表页用正文代替摘要但要去掉代码。

操作步骤

  1. 打开文章内容页模板

    • 找到你的文章内容页模板文件,通常位于 /templets/你的模板目录/article_article.htm
  2. 修改调用正文的代码

    • 找到类似 {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}
  3. 保存并更新缓存

    • 保存模板文件后,到后台“系统 -> 站点缓存”,点击“更新全部缓存”。

优点

  • 灵活:可以精确控制要去除哪些标签。
  • 自动化:无需手动填写,自动过滤。

缺点

  • 如果过滤规则不当,可能会误删掉你需要的格式标签(如 <p>, <img> 等)。
  • 在模板里写PHP代码,对新手来说有一定门槛。

修改系统文件(全局影响,谨慎使用)

这种方法会从根本上改变织梦处理文章正文的方式,让所有调用 {dede:field.body/} 的地方都自动去除代码。非常强大,但有风险,请务必先备份文件!

适用场景:你希望整个网站的正文内容都默认是干净的,不希望在任何地方出现代码。

操作步骤

  1. 备份文件

    • 在进行任何修改前,请务必备份 /include/helpers/archive.helper.php 文件。
  2. 修改文件

    • 打开 /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;
    }
  3. 保存并更新

    • 保存修改后的 archive.helper.php 文件。
    • 到后台“系统 -> 站点缓存”,点击“更新全部缓存”。
    • 为了确保效果,最好去“内容 -> 普通文章维护”,对几篇已存在的文章执行“更新HTML”操作。

优点

  • 一劳永逸:全局生效,所有调用正文的地方都会自动过滤。
  • 代码整洁:逻辑在系统核心文件中,模板文件非常干净。

缺点

  • 风险高:修改核心文件,一旦出错可能导致网站异常。
  • 影响全局:所有地方都生效,无法单独控制某个页面的显示方式。

总结与建议

方法 优点 缺点 推荐场景
内容摘要 最安全,不影响正文,可控 需要手动操作 列表页显示简介的首选方案。
模板过滤 灵活,可精确控制标签,不修改核心文件 需要懂一点PHP,可能误删格式 页显示干净正文,或列表页需要过滤正文时。
修改核心文件 一劳永逸,全局生效,模板干净 风险高,影响所有页面,修改需谨慎 确定整个网站都需要统一过滤规则时使用。

给新手的建议

  • 如果只是想在首页或栏目页显示简单的文章简介,请优先使用方法一
  • 如果想在文章详情页里把正文里的广告代码(如 <script>)去掉,请使用方法二,这是最常用且最安全灵活的做法。
  • 除非你非常确定,否则不要轻易使用方法三
-- 展开阅读全文 --
头像
eclipse的c语言使用
« 上一篇 今天
dede如何批量修改文档属性?
下一篇 » 今天

相关文章

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

目录[+]