dede图片如何转为绝对路径?

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

这是一个非常常见的需求,主要有以下几个好处:

dede图片 绝对路径
(图片来源网络,侵删)
  • SEO优化:搜索引擎可以更准确地识别和收录图片。
  • 防盗链:使用完整的域名可以更好地配合防盗链设置。
  • 代码规范性:在复杂网站或移动端开发中,使用绝对路径可以避免路径解析错误。
  • 提升性能:在某些情况下,CDN或浏览器可以更高效地处理绝对路径。

核心概念:DedeCMS的图片路径存储机制

在修改之前,你必须理解DedeCMS是如何存储图片路径的,它主要有三个地方:

  1. 正文 (body 字段):这是最主要的地方,你在编辑器里上传的图片,路径都存在这里。
  2. 文章缩略图 (litpic 字段):文章列表页显示的封面图。
  3. 其他自定义字段:如果你在模型中添加了图片类型的字段,也会存储路径。

我们的目标就是找到并修改这三个地方的路径生成逻辑。


后台全局设置(推荐,最简单)

这个方法主要影响新发布或编辑的文章中的图片路径

  1. 登录DedeCMS后台

    dede图片 绝对路径
    (图片来源网络,侵删)
  2. 进入 “系统” -> “系统基本参数”

  3. 在左侧菜单中找到 “核心设置”

  4. 找到 “附件目录” 选项,默认值是 /uploads

  5. 关键步骤:将这里的值修改为你的网站根目录下的绝对路径

    dede图片 绝对路径
    (图片来源网络,侵删)
    • 如果你的网站根目录是 /home/wwwroot/yourdomain.com,你就直接填写这个。
    • 重要提示:这个路径是服务器上的物理路径,而不是网址,请务必确认你服务器的网站根目录是什么,如果不确定,可以咨询你的服务器提供商或虚拟主机服务商。
  6. 保存设置。

效果: 设置后,你再发布或编辑文章,在编辑器里上传的图片,其路径就会自动生成以你设置的物理路径开头的绝对路径。

局限性

  • 这个方法只对新操作有效,不会自动修改数据库里已经存在的旧文章中的图片路径。
  • 它主要影响正文内容里的图片,对缩略图可能不完全有效(需要结合其他方法)。

修改模板文件(针对缩略图和特定位置)

这个方法主要用于控制文章缩略图 ([field:litpic]) 和其他自定义字段图片的显示方式。

修改缩略图标签

在列表页、文章页等模板文件中,找到调用缩略图的标签,通常是 [field:litpic/]

修改前(相对路径)

<img src="[field:litpic/]" alt="[field:title/]">

修改后(绝对路径): 在 src 属性中,手动拼接上你的域名。

<img src="{dede:global.cfg_basehost/}[field:litpic/]" alt="[field:title/]">

解释

  • {dede:global.cfg_basehost/} 是DedeCMS的全局变量,它会自动输出你在“系统基本参数”中设置的“网站根网址”,也就是你的域名,如 http://www.yourdomain.com
  • [field:litpic/] 是图片在 /uploads/ 目录下的相对路径,如 /uploads/230101/123_123.jpg
  • 两者拼接起来,就得到了完整的绝对路径:http://www.yourdomain.com/uploads/230101/123_123.jpg

修改自定义图片字段

如果你的模型中有自定义的图片字段(myimage),方法完全一样。

修改前

<img src="[field:myimage/]" alt="自定义图片">

修改后

<img src="{dede:global.cfg_basehost/}[field:myimage/]" alt="自定义图片">

使用SQL命令批量修改(处理历史数据)

这是最彻底的方法,可以一次性修改数据库中所有已存在的旧文章的图片路径。操作前务必备份数据库!

修改文章正文 (body 字段)

我们需要将 body 字段中的 src="/uploads/..."src="../uploads/..." 这样的相对路径,替换为 src="http://www.yourdomain.com/uploads/..." 这样的绝对路径。

在DedeCMS后台的 “系统” -> “SQL命令行工具” 中,执行以下SQL语句:

UPDATE `dede_addonarticle` SET `body` = REPLACE(`body`, 'src="/uploads/', 'src="http://www.yourdomain.com/uploads/');

语句解释

  • UPDATEdede_addonarticle`dedeaddonarticle表的前缀(如果你的前缀不是dede`,请自行修改)。
  • SETbody= REPLACE(...):对 body 字段进行替换操作。
  • REPLACE(原字符串, '要查找的内容', '要替换成的内容'):这是MySQL的替换函数。
  • 'src="/uploads/':这是你要查找的相对路径模式,如果你的图片是 src="../uploads/...,你就需要用 'src="../uploads/'
  • 'src="http://www.yourdomain.com/uploads/':这是你要替换成的绝对路径。请务必将 http://www.yourdomain.com 替换成你自己的域名。

注意:如果你的图片路径中包含 这种上级目录的写法,你可能需要执行多次 REPLACE 来替换干净。

修改文章缩略图 (litpic 字段)

同样,在“SQL命令行工具”中执行以下语句来批量修改缩略图路径:

UPDATE `dede_archives` SET `litpic` = REPLACE(`litpic`, '/uploads/', 'http://www.yourdomain.com/uploads/');

语句解释

  • UPDATEdede_archives`dede_archives` 是文章主表,存储了标题、缩略图等基本信息。
  • litpic 字段中的 /uploads/ 替换为 http://www.yourdomain.com/uploads/

注意:这个替换可能会把 /uploads/ 在其他地方出现的情况也替换掉,但通常在缩略图字段中,/uploads/ 是主要模式,风险较低。


总结与最佳实践

方法 作用范围 优点 缺点 适用场景
后台设置 新发布的文章正文 简单,一劳永逸 不影响旧数据,对缩略图效果有限 新网站上线,或愿意逐步更新旧内容的网站。
修改模板 缩略图、自定义字段 精准控制,即时生效 需要修改多个模板文件,不影响正文 主要解决缩略图和特定字段的路径问题。
SQL批量修改 所有历史数据(正文、缩略图) 彻底,一劳永逸 有风险(误操作会破坏数据),需要技术基础 网站已有很多内容,需要一次性全部修改。

推荐的完整操作流程

  1. 备份数据库!备份数据库!备份数据库! (重要的事情说三遍)
  2. 进入 “系统基本参数” -> “核心设置”,将 “附件目录” 修改为你的服务器物理路径。 (方法一)
  3. 检查并修改所有使用 [field:litpic/] 等图片标签的模板文件,加上 {dede:global.cfg_basehost/} 前缀。 (方法二)
  4. “SQL命令行工具” 中,执行 UPDATE 语句,批量修改 dede_addonarticledede_archives 表中的旧数据。 (方法三)
  5. 修改完成后,去前台刷新页面,检查图片是否都能正常显示。

通过以上组合拳,你就可以完美地将DedeCMS网站中的所有图片路径都设置为绝对路径了。

-- 展开阅读全文 --
头像
dede重新生成略缩图
« 上一篇 03-05
单页织梦模板哪里能免费下载?
下一篇 » 03-05

相关文章

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

目录[+]