在使用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();
    }
}
    

在这段代码中,DedeCMS默认是通过文章标题来检测是否已经存在相同的文章。如果发现有相同标题的文章,则会提示用户“对不起,请不要发布重复文档!”。

为了实现“允许不同会员发布相同文章,但不允许同一会员发布重复文章”的功能,我们需要修改查询条件,使其只检查当前会员发布的文章是否重复。

将上述代码中的查询语句:


$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."'");

这样,系统就会根据当前会员ID(mid)和文章标题同时进行匹配,只有当该会员已经发布了相同标题的文章时,才会提示“对不起,请不要发布重复文档!”。

完成修改后,保存文件并刷新页面即可生效。

通过以上步骤,我们成功实现了DedeCMS中“允许不同会员发布相同文章,但不允许同一会员发布重复文章”的功能。这种方法不仅满足了特定场景下的业务需求,还保持了系统的稳定性和安全性。

注意:在修改核心文件之前,请确保备份原始文件,以便在出现问题时能够快速恢复。

以上内容希望能帮助到正在使用DedeCMS的朋友。