- 修改程序,让它在发布文章时自动获取摘要。 (治本之策,一劳永逸)
- 在后台手动填写摘要,或者使用SQL命令批量为已有文章生成摘要。 (临时方案或补充方案)
下面我将详细介绍这两种方法,强烈推荐使用第一种方法。

(图片来源网络,侵删)
修改程序,实现自动获取摘要(推荐)
这个方法的核心是修改DedeCMS的发布文章处理文件,让它在保存文章时,自动从正文中截取一部分内容作为摘要。
操作步骤:
-
找到核心文件 你需要修改的文件是:
/dede/article_add.php这个文件是处理后台“新增文章”表单提交的核心逻辑。 -
定位关键代码 在
article_add.php文件中,找到处理摘要(description)字段的代码段,通常在文件中下部,类似这样:// ... 其他代码 ... $description = cn_substr($description, $descriptionlen); // ... 其他代码 ... $query = "INSERT INTO `dede_archives`(...)"; // ... 其他代码 ...
我们需要在这个位置添加自动生成摘要的逻辑。
(图片来源网络,侵删) -
添加自动摘要代码 在
description变量被使用之前(即在INSERT语句之前),插入以下代码:// 自动获取摘要 Start if (empty($description)) { // 如果摘要为空,则从body中自动提取 // $body 是文章正文,已经在 article_add.php 中定义 $description = cn_substr(html2text($body), 250); // 提取前250个字符作为摘要 } // 自动获取摘要 End代码解释:
if (empty($description)):判断提交的摘要是否为空,如果为空,则执行自动获取。html2text($body):这是一个DedeCMS内置的函数,用于将HTML格式的文章正文($body)转换为纯文本,这非常重要,因为它会移除HTML标签、图片、代码等,只保留文字内容,确保摘要干净整洁。cn_substr(..., 250):这是DedeCMS的截取字符串函数,250是截取的长度(字符数),你可以根据需要调整这个值,通常200-500之间比较合适。
-
保存并测试 保存修改后的
article_add.php文件,当你去后台发布新文章时,如果不填写摘要,系统会自动从正文中截取内容填充进去。
手动或批量处理现有文章
这个方法不改变程序行为,而是解决“已经发布的文章没有摘要”的问题。

(图片来源网络,侵删)
手动填写(最简单但最耗时)
对于少量文章,直接在后台编辑文章,手动填写摘要即可。
使用SQL命令批量生成(适用于大量文章)
如果你有大量历史文章没有摘要,手动填写不现实,可以通过执行SQL语句来批量更新。
⚠️ 重要警告: 在执行任何SQL操作前,务必备份数据库!以防操作失误导致数据丢失。
操作步骤:
-
登录你的网站数据库管理工具(如 phpMyAdmin)。
-
选择你的DedeCMS数据库。
-
点击“SQL”选项卡,输入以下命令:
-- 为所有文章(非生成HTML的)生成摘要 UPDATE dede_archives a LEFT JOIN dede_addonarticle d ON a.id = d.aid SET a.description = SUBSTRING(HTML2TEXT(d.body), 1, 250) WHERE a.typeid != '-1' AND a.description = '';
SQL语句解释:
UPDATE dede_archives a:要更新的主表是dede_archives(文章列表表),并给它一个别名a。LEFT JOIN dede_addonarticle d ON a.id = d.aid:因为文章正文在附加表dede_addonarticle中,所以需要通过id(主表ID)和aid(附加表文章ID)关联起来,别名d。SET a.description = ...:设置摘要字段的值。SUBSTRING(HTML2TEXT(d.body), 1, 250):这是核心逻辑。HTML2TEXT(d.body):将附加表中的正文d.body从HTML转为纯文本。SUBSTRING(..., 1, 250):从转换后的纯文本中截取前250个字符。
WHERE a.typeid != '-1' AND a.description = '':这是更新条件。a.typeid != '-1':排除掉系统生成的特殊文章(如首页、栏目页等),它们的typeid是 -1。a.description = '':只更新摘要为空的文章,避免覆盖掉你已经手动填写的摘要。
-
点击“执行”按钮。
-
执行成功后,所有符合条件的文章摘要都会被自动填充,你可以去后台刷新一下文章列表,检查结果。
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 修改程序 | 一劳永逸,新文章自动处理,符合系统逻辑。 | 需要修改核心文件,对新手有技术门槛。 | 强烈推荐,适用于所有希望提升效率的用户。 |
| SQL批量更新 | 快速解决历史文章摘要问题,无需修改程序。 | 只是一次性操作,新文章仍需手动或再次执行SQL。 | 主要用于处理已发布文章的摘要补全问题。 |
最佳实践建议:
- 首先使用方法一,修改
article_add.php,确保未来发布的文章都能自动获取摘要。 - 使用方法二的SQL命令,一次性为你的网站历史文章批量生成摘要,让整个网站的摘要都完整起来。
