- 推荐方式:使用自动摘要功能(最稳定、官方)
- 手动修改模板(最灵活、需要一定代码基础)
下面我将详细介绍这两种方法。

(图片来源网络,侵删)
使用 DedeCMS 自带的自动摘要功能(推荐)
这是最官方、最稳定的方法,利用了 DedeCMS 的自动摘要和自动提取缩略图的功能。
前提条件:
-
文章模型中必须开启“自动摘要”:
- 进入后台
核心->内容模型管理。 - 点击你正在使用的文章模型(如“文章”)进行修改。
- 在模型字段设置中,找到
description(字段,确保isnull(允许为空)是“否”,并勾选autoadmin(后台自动生成)选项。
- 进入后台
-
必须使用编辑器插入图片:
- 在后台发布文章时,必须使用 DedeCMS 自带的编辑器(如百度编辑器、FCKeditor 等)的“插入图片”按钮来添加图片,而不是直接粘贴外部图片链接或手动写
<img>标签,这样才能保证<img>标签的格式规范。
- 在后台发布文章时,必须使用 DedeCMS 自带的编辑器(如百度编辑器、FCKeditor 等)的“插入图片”按钮来添加图片,而不是直接粘贴外部图片链接或手动写
操作步骤:
-
开启自动提取缩略图:
(图片来源网络,侵删)- 进入后台
系统->系统基本参数->核心设置。 - 找到
自动提取缩略图选项,将其设置为“是”。 - 找到
自动提取缩略图的远程图片是否下载本地,根据需要设置(通常建议开启,避免外部图片失效)。 - 保存设置。
- 进入后台
-
发布文章时设置缩略图:
- 在后台发布或编辑文章时,你会看到“缩略图”这一栏。
- 关键一步:在文章内容编辑框中,将光标定位在第一张图片的位置。
- 然后点击右侧的
自动提取按钮。
-
完成:
- 点击“自动提取”后,系统会自动从你光标位置(即第一张图片)提取图片路径,并填充到“缩略图”输入框中。
- 如果图片是远程的,并且你开启了远程图片下载,系统还会自动将图片下载到你的网站服务器上。
- 发布文章后,这张图片就会成为文章的缩略图。
优点:
- 操作简单,无需修改代码。
- 官方功能,稳定可靠,兼容性好。
缺点:
- 每次发布/编辑文章时都需要手动点击“自动提取”,如果文章数量多会比较繁琐。
- 依赖编辑器的规范操作。
修改模板文件(手动调用,更灵活)
如果你希望在首页、列表页等地方直接调用文章内容中的第一张图片作为缩略图,而不需要手动在后台设置,那么就需要修改模板文件,这通常通过自定义函数或修改 arclist 标签实现。
这里我们以最常用的方法——修改 include/extend.func.php 文件,添加一个自定义函数为例。
操作步骤:
-
创建或修改
extend.func.php文件:- 在你的网站根目录下的
include文件夹中,找到extend.func.php文件。 - 如果这个文件不存在,请手动创建一个。
- 在这个文件的末尾(
?>之前),添加以下 PHP 函数代码:
/** * 获取文章内容中的第一张图片路径 * @param string $body 文章内容 * @return string 第一张图片的路径,如果没有则返回默认图 */ function GetFirstImg($body) { // 如果内容为空,返回空 if (empty($body)) { return ''; } // 匹配 <img> 标签的正则表达式 $pattern = "/<img\s[^>]*?src=['\"]([^'\"]*?)['\"][^>]*?>/i"; // 执行匹配 preg_match_all($pattern, $body, $matches); // 如果找到了图片 if (isset($matches[1]) && !empty($matches[1])) { // 返回第一张图片的 src return $matches[1][0]; } // 如果没有找到图片,可以返回一个默认的缩略图路径 // return '/images/default_thumb.jpg'; // 取消注释这行可以设置默认图 return ''; } - 在你的网站根目录下的
-
在模板文件中使用这个函数:
- 打开你需要调用缩略图的模板文件,例如首页模板
index.htm或列表页list_article.htm。 - 找到调用文章缩略图的地方(通常是
[field:picname/])。 - 将其替换为调用我们刚刚创建的函数,通常在
arclist或list标签内使用。
示例:在首页
{dede:arclist}中调用{dede:arclist row='8' titlelen='30'} <li> <!-- 原来的调用方式 --> <!-- <a href="[field:arcurl/]"><img src="[field:picname/]" alt="[field:title/]"></a> --> <!-- 新的调用方式 --> <a href="[field:arcurl/]"> <!-- 调用GetFirstImg函数,如果获取到图片则显示,否则不显示img标签 --> [field:body function='(trim(@me) ? "<img src=\"".GetFirstImg(@me)."\" alt=\"[field:title/]\">" : "")] </a> <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a> </li> {/dede:arclist}代码解释:
[field:body function='...']:这是对文章内容body字段进行处理。@me:在函数中代表当前字段的值,也就是文章内容。GetFirstImg(@me):调用我们第一步创建的函数,传入文章内容,并获取返回的第一张图片路径。trim(@me) ? ... : "":这是一个三元运算符,判断@me(即函数返回的图片路径)是否为空,如果不为空,则输出<img>标签;如果为空,则输出空字符串。alt="[field:title/]":为图片添加alt属性,有利于 SEO,这里使用文章标题。
- 打开你需要调用缩略图的模板文件,例如首页模板
优点:
- 完全自动化,无需后台干预。
- 非常灵活,可以在任何模板中调用。
缺点:
- 需要修改代码,对新手有一定门槛。
- 如果网站升级,
extend.func.php文件可能会被覆盖,需要重新添加。 - 正则表达式可能无法处理所有格式的
<img>标签(例如包含换行符的)。
总结与建议
| 特性 | 方法一(自动摘要) | 方法二(修改模板) |
|---|---|---|
| 操作难度 | 低 | 中 |
| 自动化程度 | 手动操作 | 完全自动 |
| 稳定性 | 非常高 | 依赖代码和模板 |
| 适用场景 | 日常发布少量文章,追求稳定 | 首页、列表页等需要自动化展示缩略图的场景 |
我的建议是:
- 对于普通网站管理员:优先使用 方法一,它最简单、最不容易出错,符合 DedeCMS 的设计逻辑。
- 对于需要高度自定义和自动化展示的开发者:使用 方法二,它能让你在前端模板中更自由地控制缩略图的显示逻辑,实现更复杂的页面效果。
你可以根据自己网站的实际需求和技能水平选择最适合你的方案。
