在使用Dedecms进行内容管理时,可能会遇到一些特殊需求,例如:允许不同会员发布相同的文章标题,但不允许同一会员发布重复的文章。以下是一个针对该问题的解决方案,通过修改相关文件实现功能优化。 首先,我们需要对Dedecms的核心文件进行调整。具体步骤如下: 打开文件 `/member/inc/archives_check.php`。
找到以下代码段:

// 检测文档是否重复
if($cfg_mb_cktitle == 'Y') {
    $row = $dsql->GetOne("Select * From `dede_archives` where title like '$title' ");
    if(is_array($row)) {
        ShowMsg("对不起,请不要发布重复文档!", "-1", "0", 5000);
        exit();
    }
}
    
这段代码的作用是检测当前发布的文章标题是否已经存在于数据库中。如果存在,则会提示用户“请不要发布重复文档”。然而,默认情况下,这种检测并不区分不同的会员。因此,我们需要对其进行修改,以确保只有同一会员发布的重复文章才会被拦截。 将上述代码中的查询语句:

$row = $dsql->GetOne("Select * From `dede_archives` where title like '$title' ");
    
修改为:

$row = $dsql->GetOne("Select * From `dede_archives` where title like '$title' and mid = '" . $cfg_ml->M_ID . "'");
    
这里的 `mid` 是会员的唯一标识符,`$cfg_ml->M_ID` 表示当前登录会员的ID。通过添加这一条件,我们实现了仅检测当前会员是否发布了相同标题的文章,而不会影响其他会员的操作。 完成以上修改后,保存文件并刷新缓存。此时,系统将支持不同会员发布相同标题的文章,同时避免同一会员重复提交相同内容。
需要注意的是,在进行任何核心文件修改之前,请务必备份原始文件,以防万一出现问题可以快速恢复。此外,如果您不熟悉PHP或Dedecms的结构,建议咨询专业人士或开发者以确保网站的安全性和稳定性。 希望这篇文章能帮助您更好地理解Dedecms的功能定制方法,并为您的网站管理提供便利!