DEDE 的审核机制
在 DEDE 中,文章发布后的状态通常由一个字段控制,即 arcrank 字段。

arcrank= 0:表示文章 已审核,前台可以正常显示。arcrank> 0:表示文章 未审核,这个数字可以对应不同的审核级别,1可能是“待审核”,2可能是“退回修改”等,在默认情况下,只要不是0,文章在前台就无法被访问到。
要实现“文章默认不审核”,我们需要修改的核心就是:让文章在初次被添加到数据库时,arcrank 字段的默认值不再是 0,而是其他值(1)。
修改数据库表结构(最直接、最推荐的方法)
这是最根本的解决方法,一劳永逸,通过修改 dede_archives 表(文章主表)的结构,为 arcrank 字段设置一个新的默认值。
操作步骤:
-
登录你的网站数据库管理工具
(图片来源网络,侵删)- 通常是你虚拟主机控制面板(如 cPanel、宝塔面板)自带的 phpMyAdmin。
- 或者使用本地数据库管理工具,如 Navicat、SQLyog 等。
-
选择正确的数据库
在左侧列表中,选择你的 DEDE 网站所使用的数据库名。
-
找到
dede_archives表- 在数据库的列表中,找到
dede_archives这张表。dede_是默认的前缀,如果你在安装时修改过,请使用你的实际前缀。
- 在数据库的列表中,找到
-
修改
arcrank字段的默认值- 点击
dede_archives表,然后点击“结构”或“Structure”选项卡。 - 在字段列表中找到
arcrank这一行。 - 在“操作”或“Action”列中,点击“更改”或“Change”。
- 在弹出的编辑页面中,找到“默认值”或“Default”这一项。
- 将默认值从
0修改为你想要的值,1。 - 点击“执行”或“Go”保存修改。
- 点击
完成!
当你通过任何方式(后台手动发布、会员投稿、采集等)添加新文章时,只要没有特别指定,arcrank 字段的值就会自动变成 1,即“未审核”状态。
修改核心程序文件(针对特定发布方式)
如果你只想让“会员投稿”默认不审核,或者“后台手动发布”默认不审核,那么可以通过修改相应的 PHP 文件来实现,这种方法比较灵活,但不如方法一彻底,且升级 DEDE 后可能需要修改。
场景1:会员投稿默认不审核
需要修改文件:/member/contents_add.php
-
打开
/member/contents_add.php文件。 -
找到处理文章入库的 SQL 语句,通常在文件末尾,类似这样:
$inquery = "INSERT INTO `dede_archives`(typeid,typeid2,sortrank,flag,ismake,channel,arcrank,click,money,title,shorttitle, color,writer,source,litpic,pubdate,senddate,mid,description,keywords,notpost,adminid,templet,userip) VALUES ('$typeid','$typeid2','$sortrank','$flag','$ismake','$channel','$arcrank','$click','$money','$title','$shorttitle', '$color','$writer','$source','$litpic','$pubdate','$senddate','$uid','$description','$keywords','$notpost','$adminid','$templet','$userip');"; -
找到
$arcrank这个变量,在上面这段代码之前,找到$arcrank是如何被赋值的,它可能来自一个表单变量,如$_POST['arcrank']。 -
强制修改其值:在执行
INSERT语句之前,强制将$arcrank的值设置为1。// ... 前面的代码 ... // 在执行入库语句之前,强制设置审核状态为未审核 $arcrank = 1; // 强制设置为未审核 $inquery = "INSERT INTO `dede_archives`(...) VALUES (...'$arcrank'...);"; $dsql->ExecuteNoneQuery($inquery); // ... 后面的代码 ...
场景2:后台手动发布默认不审核
需要修改文件:/dede/article_add.php
这个文件的修改逻辑和会员投稿类似。
-
打开
/dede/article_add.php文件。 -
找到处理文章入库的 SQL 语句。
-
找到
$arcrank变量,并强制将其值修改为1。// ... 前面的代码 ... // 强制设置审核状态为未审核 $arcrank = 1; $inquery = "INSERT INTO `dede_archives`(...) VALUES (...'$arcrank'...);"; $dsql->ExecuteNoneQuery($inquery); // ... 后面的代码 ...
修改后台模板(仅影响界面显示,不改变逻辑)
这个方法只是让你在后台发布文章时,默认就勾选了“审核”选项,但并不能改变文章的最终状态,它配合方法一或方法二使用,会更方便。
需要修改文件:/dede/templets/article_add.htm
- 打开
/dede/templets/article_add.htm文件。 - 找到“是否审核”的单选按钮组,代码通常是这样的:
<tr> <td height="24" colspan="2"> <strong>是否审核:</strong> <input name='ischeck' type='radio' class='np' value='1' checked> 是 <input type='radio' name='ischeck' class='np' value='0'> 否 </td> </tr> - 修改
value的值,让“否”被默认选中:<tr> <td height="24" colspan="2"> <strong>是否审核:</strong> <input name='ischeck' type='radio' class='np' value='1'> 是 <input type='radio' name='ischeck' class='np' value='0' checked> <!-- 将 checked 属性移到这里 --> 否 </td> </tr>注意:这个修改只是改变了界面上的默认选项,如果你同时使用了方法一(修改数据库默认值),那么即使这里默认选了“是”,文章入库时
arcrank仍然是1(未审核),如果没使用方法一,那么后台发布时还是要手动点一下“否”。
总结与建议
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 修改数据库 | 一劳永逸,对所有发布方式都有效,是根本的解决方法。 | 需要操作数据库,有一定技术门槛。 | 强烈推荐,这是最规范、最彻底的解决方案。 |
| 修改程序文件 | 针对性强,可以灵活控制特定功能(如仅会员投稿不审核)。 | 修改核心文件,升级 DEDE 后可能被覆盖,需要重新修改。 | 只需要对特定功能进行修改时使用。 |
| 修改后台模板 | 简单,方便管理员操作,避免遗漏。 | 不改变文章的实际状态,只是界面优化。 | 配合方法一或方法二使用,提升管理效率。 |
最佳实践方案:
- 首选【方法一】:修改
dede_archives表中arcrank字段的默认值为1,这解决了所有来源的文章默认不审核的问题。 - 辅助【方法三】:修改
/dede/templets/article_add.htm,让后台发布时默认勾选“否”,这样管理员在发布文章时就不会忘记,流程更顺畅。
通过以上组合,你就可以完美实现“DEDE 文章默认不审核”的需求了。
