使用SQL命令直接修改数据库(最推荐、最高效)
这是最直接、最快速的方法,尤其适用于需要修改大量文章(上千甚至上万篇)的情况。核心思路是:通过数据库管理工具,执行一条SQL语句,一次性更新所有符合条件的文章的属性字段。

⚠️ 重要警告:
- 操作前务必备份数据库! 这是最重要的安全措施,防止误操作导致数据丢失。
- 请确保您了解基本的SQL语法,或者严格按照下面的步骤操作。
操作步骤:
-
登录数据库管理工具
- 您可以通过您的虚拟主机控制面板(如 cPanel、宝塔面板等)进入“数据库”或“phpMyAdmin”。
- 也可以在本地使用 Navicat、DBeaver 等工具连接到您的服务器数据库。
-
选择正确的数据库 在工具中,选择您 DedeCMS 网站所使用的数据库名。
-
执行SQL语句 在 SQL 执行窗口中,输入以下命令之一,然后点击“执行”。
(图片来源网络,侵删)场景1:批量开启所有文章的“首页推荐”属性 假设您的文章表前缀是
dede_archives(默认),ismake字段控制是否生成HTML,flag字段存储文章属性。UPDATE `dede_archives` SET `flag` = 'c' WHERE `flag` NOT LIKE '%c%';
UPDATEdede_archives`表示更新dede_archives` 这张表。SETflag= 'c': 将flag字段的值设置为c,c代表“首页推荐”。WHEREflagNOT LIKE '%c%': 这是一个条件,表示只修改那些当前flag字段值不包含c的文章,这样可以避免重复添加,提高效率,如果您想强制覆盖所有文章,可以去掉这个WHERE条件。
场景2:批量开启所有文章的“头条”、“特荐”等属性 如果需要设置多个属性,可以将它们拼接在一起,同时设置为“头条”和“推荐”。
h代表 头条c代表 推荐p代表 特荐UPDATE `dede_archives` SET `flag` = 'hc' WHERE `flag` NOT LIKE '%h%' OR `flag` NOT LIKE '%c%';
这个
WHERE条件稍微复杂一点,意思是只要文章不是同时拥有h和c属性,就会被更新。
场景3:批量清除所有文章的“首页推荐”属性 如果想取消某个属性,可以使用
REPLACE函数来移除它。
(图片来源网络,侵删)UPDATE `dede_archives` SET `flag` = REPLACE(`flag`, 'c', '');
REPLACE(flag, 'c', ''): 查找flag字段中的c,并将其替换为空(即删除)。
场景4:批量修改文章状态(如:从“仅动态”改为“生成HTML”) 文章的发布状态由
ismake字段控制。ismake = -1表示仅动态ismake = 1表示生成HTMLUPDATE `dede_archives` SET `ismake` = 1 WHERE `ismake` = -1;
-
验证结果 SQL 执行成功后,返回受影响的行数,然后登录您的 DedeCMS 后台,刷新文章列表,查看属性是否已成功修改。
利用“审核发布”功能(较安全、适用于特定场景)
这个方法巧妙地利用了织梦自身的审核机制,虽然不能直接修改“推荐”、“头条”等属性,但可以用来批量修改文章的 审核状态 和 生成HTML状态。
适用场景:
- 批量审核未审核的文章。
- 批量将“仅动态”的文章修改为“生成HTML”。
操作步骤:
- 进入 DedeCMS 后台 -> 内容管理 -> 审核发布管理。
- 您可以看到所有待审核的文章。
- 点击列表下方的 “全选” 按钮,选中所有待审核的文章。
- 在下方的 “审核选项” 中,选择 “审核通过”。
- 在 “生成选项” 中,选择 “生成HTML”。
- 点击 “执行” 按钮。
这样,所有被选中的文章都会被审核通过,并且系统会自动为它们生成静态HTML文件,这相当于批量修改了 arcrank (审核状态) 和 ismake (生成状态) 字段。
编写小工具或使用Excel导入(最灵活、适用于复杂修改)
如果您需要对文章进行非常复杂的、不规则的属性修改,或者想结合其他信息(如栏目ID、关键词等)来决定属性,那么这个方法最适合您。
操作步骤:
-
导出文章列表
- 进入 DedeCMS 后台 -> 内容管理 -> 所有文档。
- 在文章列表页面,点击右上角的 “选择栏目”,选择您要操作的所有栏目。
- 点击 “搜索” 按钮,列出所有符合条件的文章。
- 点击列表下方的 “Excel文档” 按钮,将文章列表(包含ID、标题、属性等)导出到一个Excel文件中。
-
在Excel中修改
- 用 Microsoft Excel 或 WPS 打开导出的
.xls文件。 - 找到
flag这一列。 - 根据您的需求,手动修改这一列的值。
- 如果想设为“推荐”,就在单元格内填入
c。 - 如果想设为“头条”和“推荐”,就填入
hc。 - 如果想清除所有属性,就留空。
- 如果想设为“推荐”,就在单元格内填入
- 注意: 一定要保留
id这一列,这是后续导入的关键。
- 用 Microsoft Excel 或 WPS 打开导出的
-
导入修改后的数据
-
这是一个比较麻烦的步骤,因为 DedeCMS 后台没有直接导入 Excel 修改
flag的功能,您通常需要借助第三方插件或自己编写一个简单的导入脚本。 -
插件方案: 在 DedeCMS 官方论坛或一些插件网站上搜索“Excel导入”、“批量修改”等关键词,看是否有现成的插件可以使用,这些插件通常允许您上传修改后的Excel文件,然后根据ID去更新数据库。
-
手动脚本方案(适合懂一点PHP的开发者):
-
将Excel中的
id和flag两列数据整理成一个简单的CSV文件或文本文件。 -
编写一个简单的PHP脚本,循环读取这个文件,然后为每一行执行一条
UPDATE语句。// 假设您有一个文件 data.txt,格式为: ID,FLAG // // 1,c // 2,hc // 3, $file = 'data.txt'; $lines = file($file); foreach ($lines as $line) { list($id, $flag) = explode(',', trim($line)); if (empty($id)) continue; // 连接数据库... (请根据您的实际情况填写) $dbhost = 'localhost'; $dbuser = 'root'; $dbpass = 'your_password'; $dbname = 'your_database'; $link = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname); mysqli_set_charset($link, 'utf8'); $sql = "UPDATE `dede_archives` SET `flag` = '{$flag}' WHERE `id` = {$id}"; mysqli_query($link, $sql); mysqli_close($link); echo "Updated ID: {$id} with flag: {$flag}\n"; } -
将此脚本上传到网站服务器并运行,即可完成批量修改。
-
-
总结与建议
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| SQL命令 | 速度最快、效率最高、操作简单 | 有一定风险,误操作可能导致数据丢失 | 批量修改大量文章的属性,且修改规则统一 |
| 审核发布 | 非常安全、利用系统原生功能 | 功能有限,只能修改审核和生成状态 | 批量审核文章、或批量将动态页改为静态页 |
| Excel导入 | 最灵活、可处理复杂不规则的修改 | 流程最繁琐,可能需要插件或开发能力 | 需要根据特定条件(如不同栏目不同属性)进行修改 |
对于绝大多数用户来说,方法一(SQL命令) 是解决“批量修改属性”问题的首选,只要您记得备份数据库,它就是最强大、最可靠的工具。
