在网站内容管理系统中,实现灵活的用户权限管理和发布人信息替换是一项重要的功能。本文将详细介绍如何通过修改DEDE(织梦)系统中的相关文件和数据库结构,实现“谁审核,发布人就是谁”的效果。这不仅有助于提高编辑工作的透明度,还能更好地统计每位编辑的工作业绩。
需求背景:我们的网站(oemay女人妆)中的新闻内容主要来源于采集,但由于所有采集内容的发布人均为同一人,无法准确反映实际负责审核与二次编辑的工作人员的贡献。因此,我们需要对系统进行调整,使得在审核并发布文章时,自动将发布人信息更新为当前审核编辑的信息。
实现这一功能的关键点如下:
- DEDE系统的文档主表为
dede_archives,其中mid字段用于存储发布人的ID,类型为mediumint(8)。 - 文章列表中的审核、生成等操作逻辑位于
dede/archives_do.php文件中。 - 通过类
UserLogin中的getUserID方法可以获取当前登录编辑的ID号。
接下来,我们将详细描述具体的修改步骤:
首先,打开dede/archives_do.php文件,定位到第225行附近,找到以下代码段:
$maintable = ( trim($row['maintable'])=='' ? '2ky_archives' : trim($row['maintable']) );
if($dsql->ExecuteNoneQuery("Update `2ky_arctiny` set arcrank='0' where id='$aid' ")) {
$dsql->ExecuteNoneQuery("Update `2ky_taglist` set arcrank='0' where aid='$aid' ");
}
if($row['issystem']==-1) {
$dsql->ExecuteNoneQuery("Update `".trim($row['addtable'])."` set arcrank='0' where aid='$aid' ");
}
else {
$dsql->ExecuteNoneQuery("Update `$maintable` set arcrank='0', dutyadmin='".$cuserLogin->getUserID()."' where id='$aid' ");
}
$pageurl = MakeArt($aid,false);
将其修改为以下内容:
$maintable = ( trim($row['maintable'])=='' ? '2ky_archives' : trim($row['maintable']) );
$dsql->ExecuteNoneQuery("Update `2ky_arctiny` set arcrank='0', mid=".$cuserLogin->getUserID()." where id='$aid' ");
if($row['issystem']==-1) {
$dsql->ExecuteNoneQuery("Update `".trim($row['addtable'])."` set arcrank='0', mid=".$cuserLogin->getUserID()." where aid='$aid' ");
}
else {
$dsql->ExecuteNoneQuery("Update `$maintable` set arcrank='0', dutyadmin='".$cuserLogin->getUserID()."', mid=".$cuserLogin->getUserID()." where id='$aid' ");
}
以上代码的主要改动在于:
1. 在更新arcrank字段的同时,新增了对mid字段的更新。
2. 将当前登录用户的ID(通过$cuserLogin->getUserID()获取)赋值给mid字段。
完成上述修改后,保存文件并刷新后台页面。此时,当编辑人员审核并通过一篇文章时,系统会自动将该文章的发布人信息替换为当前审核编辑的ID。
通过这一优化,我们不仅实现了“谁审核,发布人就是谁”的功能需求,还进一步提升了系统管理的灵活性和数据统计的准确性。这对于多用户协作的内容管理系统尤为重要。
希望本文能为使用DEDE系统的开发者提供参考价值。如果您在实施过程中遇到任何问题,欢迎随时交流讨论!