在使用Dedecms CMS模板时,有时会借助火车头采集器来收集文章内容。然而,在从多个网站采集数据的过程中,难免会出现重复的文章。那么,如何有效避免这些重复文章的发布呢?虽然Dedecms后台自带了重复检测功能,但其效果往往不尽如人意,因为在添加文章时仍然可以成功保存重复内容。为了解决这一问题,我们可以在点击“保存”按钮之前,加入一个检测重复文档的功能。如果检测到存在重复文档,则提示用户并退出保存操作。 ### 操作步骤 #### 第一步:定位目标文件 打开Dedecms CMS后台文件夹中的`article_add.php`文件。 #### 第二步:修改代码 找到以下代码段:
if(empty($click)) $click = ($cfg_arc_click=='-1' ? mt_rand(50, 200) : $cfg_arc_click);
在此代码段下方插入以下代码:

if($cfg_mb_cktitle=='Y')
{  
    $row = $dsql->GetOne("Select * From `inyhow_archives` where title like '$title' "); 
    if(is_array($row))
    {
        ShowMsg("对不起,请不要发布重复文档!","-1");
        exit();
    }
}
    
#### 第三步:保存文件 完成上述修改后,保存`article_add.php`文件。此时,当你尝试添加具有相同标题的文章时,系统将弹出提示:“对不起,请不要发布重复文档!”同时,该文章不会被存入数据库中。 ### 功能解析 这段代码的核心逻辑在于通过SQL查询判断数据库中是否已存在相同标题的文章。具体实现如下: - `$cfg_mb_cktitle` 是Dedecms的一个配置项,用于启用或禁用标题重复检测功能。当其值为`Y`时,表示启用检测。 - `$dsql->GetOne()` 方法用于执行SQL查询,检查是否存在与当前标题相同的记录。 - 如果查询结果是一个数组(即数据库中已存在相同标题的文章),则调用`ShowMsg()`函数显示提示信息,并通过`exit()`终止后续代码执行。 ### 注意事项 1. **备份文件**:在修改任何核心文件之前,请务必做好备份工作,以免因误操作导致系统无法正常使用。 2. **数据库表名**:代码中的`inyhow_archives`是示例表名,请根据实际数据库表名进行替换。 3. **性能优化**:如果网站文章数量庞大,频繁执行SQL查询可能会影响性能。可以考虑对标题字段建立索引以提高查询效率。 通过以上方法,您可以有效地避免Dedecms CMS模板中重复文章的发布问题,从而提升网站内容的质量和原创性。