- (
body字段)中提取:如果缩略图路径是存放在文章内容里的,需要从正文中抓取。 - 从自定义字段或外部来源提取:如果缩略图路径存在于文章的自定义字段里,或者是一个固定的URL前缀。
下面我将为您提供这两种情况下的详细解决方案,包括直接修改数据库的SQL语句和使用织梦后台功能的两种方法。

使用织梦后台功能(推荐,更安全)
这种方法不需要直接操作数据库,织梦会自动处理,适合大多数用户。
场景1:从文章内容中提取并设置为缩略图
织梦的后台有一个“文档关键词维护”功能,可以批量提取内容中的图片作为缩略图。
操作步骤:
-
登录织梦后台。
(图片来源网络,侵删) -
进入 【系统】 -> 【SQL命令行工具】。
-
在输入框中执行以下SQL语句,将文章内容中的第一张图片设置为默认缩略图:
ALTER TABLE `dede_archives` ADD `litpicold` VARCHAR(255) NOT NULL DEFAULT '';
这句代码的作用是给
dede_archives表增加一个litpicold字段,用于备份你原有的缩略图路径,以防操作失误可以恢复。强烈建议先执行这一步! -
在 【核心】 -> 关键词管理】 中,点击 【文档关键词维护】。
(图片来源网络,侵删) -
在打开的页面中,进行如下设置:
- 操作类型:选择
替换关键词 - 这里留空,因为我们是要提取所有图片,而不是针对特定关键词。
- :这里也留空。
- 是否包含远程图片:勾选此项,这是关键,否则无法提取外部图片。
- 第一张图片做为标题图片:勾选此项。
- 是否更新数据库:勾选此项。
- 操作类型:选择
-
点击 【执行】。
织梦会遍历所有文章,将每篇文章内容中的第一张图片(或远程图片)的路径提取出来,并更新到文章的litpic(缩略图)字段中。
场景2:从自定义字段中提取
如果你的缩略图路径是保存在一个自定义字段里,newpic,你可以通过SQL语句批量将其同步到主表的litpic字段。
操作步骤:
-
同样,先进入 【系统】 -> 【SQL命令行工具】。
-
执行以下SQL语句(请将
newpic替换为你的自定义字段名):UPDATE dede_archives SET litpic = newpic WHERE newpic != '';
这句SQL的意思是:将
dede_archives表中newpic字段不为空的所有记录的litpic字段更新为newpic的值。
直接操作数据库(适合高级用户,风险较高)
直接操作数据库速度更快,但务必小心,操作前务必备份数据库!
场景1:从文章内容中提取并设置为缩略图
这种方法的核心思路是:先从文章附加表dede_addonarticle中提取出内容,然后用正则表达式匹配出第一张图片,最后更新到主表dede_archives的litpic字段。
操作步骤:
-
备份数据库! 这是最重要的一步。
-
登录你的数据库管理工具(如phpMyAdmin)。
-
执行以下SQL语句:
UPDATE dede_archives AS a JOIN dede_addonarticle AS d ON a.id = d.aid SET a.litpic = ( SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(d.body, 'src="', -1), '"', 1) WHERE d.body LIKE '%<img src="%' AND (d.body LIKE '%.jpg%' OR d.body LIKE '%.png%' OR d.body LIKE '%.gif%') LIMIT 1 ) WHERE d.body LIKE '%<img src="%' AND (d.body LIKE '%.jpg%' OR d.body LIKE '%.png%' OR d.body LIKE '%.gif%') AND a.litpic = '';
SQL语句解析:
UPDATE dede_archives AS a JOIN dede_addonarticle AS d ON a.id = d.aid:同时操作主表和附加表,通过文章ID(aid)进行关联。SET a.litpic = ( ... ):设置缩略图字段为查询到的结果。SELECT SUBSTRING_INDEX(...):这是核心的正则提取逻辑,它会找到src="和下一个之间的内容,也就是图片路径。WHERE d.body LIKE '%<img src=%':筛选出包含<img src=标签的文章。AND a.litpic = '':这是一个可选条件,表示只更新当前没有缩略图的文章,如果你想覆盖所有文章,可以去掉这个条件。
场景2:从自定义字段中提取
和方法一中的SQL语句完全一样,直接在数据库中执行即可。
UPDATE dede_archives SET litpic = newpic WHERE newpic != '';
重要注意事项和后续步骤
- 备份!备份!备份! 无论是使用SQL命令行工具还是直接操作数据库,第一步永远是备份你的数据库,这是防止灾难性后果的唯一方法。
- 检查结果:操作完成后,去网站后台随便打开几篇文章,检查缩略图是否正确提取。
- 清理缓存:织梦有很强的缓存机制,修改数据库后,如果前台页面没有立即更新,请务必去后台 【系统】 -> 【一键更新网站】 -> 【更新HTML】 -> 【更新所有】,并勾选“更新文档HTML”、“更新栏目HTML”等选项,清理缓存。
- 清理无用数据:如果你使用了方法一的第一步(添加
litpicold字段),在确认新缩略图无误后,可以执行以下SQL删除这个备份字段:ALTER TABLE `dede_archives` DROP `litpicold`;
| 场景 | 推荐方法 | 优点 | 缺点 |
|---|---|---|---|
| 提取 | 后台功能 | 安全,无需懂SQL,自动处理 | 速度相对较慢 |
| 提取 | 直接SQL | 速度极快,功能强大 | 风险高,需要懂SQL和备份数据库 |
| 从自定义字段提取 | 方法一或二均可 | 简单直接 | 需要知道自定义字段名 |
对于大多数用户,强烈推荐使用【方法一:后台功能】,它既安全又方便,只有在数据量极大,且你对数据库操作非常熟悉的情况下,才考虑使用【方法二:直接SQL】。
