-
Dedecms添加文章时防止重复插件
- 时间:2025-03-30 16:14:23 来源: 人气:1
在使用Dedecms构建文章类网站时,一个常见的问题是容易重复添加相同的文章内容。这不仅会增加数据冗余,还可能导致用户体验下降。本文将详细介绍如何通过自定义代码解决Dedecms中重复添加文章的问题。
首先,我们需要加载jQuery文件以支持后续的脚本功能。
打开 /dede/article_add.htm 文件,在 <head> 标签后添加以下代码:
<script type="text/javascript" src="/images/js/j.js"></script>
这里使用的jQuery库版本较老(1.2),建议从官网下载最新版本替换。
接下来,在第二个 </form> 标签前添加以下HTML和JavaScript代码:
<span id="checkArcRepeatedTips"></span>
<div style="margin:10px;">
<label for="checkArcRepeated">
<input type="checkbox" id="checkArcRepeated" checked="checked" /> 检测内容是否有重复
</label>
</div>
<input name="imageField" id="imageFieldBtn" type="image" src="images/button_save.gif" width="60" height="22" class="np" border="0" style="cursor:pointer; display:none;" />
<input type="button" value="保存" id="checkArcRepeatedBtn" style="width:150px; height:30px; line-height:30px; background:green; font-size:14px; font-weight:bold; color:#fff; padding:10px; cursor:pointer;" />
然后,添加相应的JavaScript逻辑来处理重复检测:
<script type="text/javascript">
$(function(){
$('#checkArcRepeatedBtn').click(function(){
if($('#title').val() == ''){
alert('标题不能为空');
return false;
}
if($('#typeid').val() == '' || $('#typeid').val() == 0){
alert('请选择栏目');
return false;
}
if($('#checkArcRepeated').attr('checked') != ''){
var range = ue.selection.getRange();
range.select();
var checkWord = ue.selection.getText();
if(!checkWord){
alert('请随机选择一段文本进行文章重复检测');
isRepeat = true;
return false;
}else{
$.ajax({
type: 'get',
url: 'checkArcRepeated.php?checkWord='+checkWord,
async: false,
beforeSend: function(){
$('#checkArcRepeatedTips').text('请稍候...');
},
success: function(data){
if(data == 'ok'){
$('#checkArcRepeated').removeAttr('checked');
$('#checkArcRepeatedTips').html(w);
isRepeat = false;
}else{
isRepeat = true;
$('#checkArcRepeatedTips').html(data);
}
}
});
}
}
if(isRepeat == false){
$('#imageFieldBtn').trigger('click')
}
});
});
</script>
删除多余的代码部分,确保页面整洁:
<input name="imageField" type="image" src="images/button_save.gif" width="60" height="22" class="np" border="0" style="cursor:pointer;" />
同时删除以下验证代码:
if(document.form1.title.value==''){
alert('文章标题不能为空!');
return false;
}
if(document.form1.typeid.value==0){
alert('请选择档案的主类别!');
return false;
}
最后,在/dede/目录下新建一个名为checkArcRepeated.php的文件,并添加以下代码:
<?php
require_once(dirname(__FILE__)."/config.php");
$checkWord = $_GET@['checkWord'];
$aid = $_GET@['aid'];
if(empty($checkWord) || $cfg_check_title=='N'){
echo '检测功能未开启或者所选文本为空,请联系';
exit;
}
$where = ' and main.arcrank>-1 and main.id=addon.aid';
if(!empty($aid)){
$where .= ' and aid <> '.$aid;
}
$sql = "SELECT aid FROM dede_addonarticle addon, dede_archives main WHERE body LIKE '%".$checkWord."%'".$where;
$row = $dsql->GetOne($sql);
if(is_array($row)){
echo '<a style="color:red;" href="article_edit.php?aid='.$row['aid'].'" target="_blank">编辑文章</a> <a style="color:red;" href="../plus/view.php?aid='.$row['aid'].'" target="_blank">前台预览</a>';
}else{
echo 'ok';
}
完成以上步骤后,当您在添加文章时,可以通过随机选择纯文本内容并点击“保存”按钮,程序会自动检测是否已存在包含该段文字的文章。如果发现重复内容,系统将提示您可以编辑或预览已有文章;如果没有重复,则会正常提交并保存新文章。
注意:此工具依赖百度编辑器API获取选中文本。如果您使用的是Dedecms自带的编辑器,可能需要查阅相关API文档进行调整。
到这里,我们已经完成了Dedecms避免重复添加文章的功能实现。
上一篇:Dedecms添加文章时提示“/templets/plus/win_templet.htm Not Found!”问题解决 下一篇:Dedecms搬家及远程附件问题:DedeTag Engine Create File False等常见疑问解答
相关文章
-
在网站建设与维护的过程中,优化代码结构和功能是提升网站性能的重要步骤。本文将介绍如何通过自定义函数实现文章删除时自动清理相关资源的功能,从而提高系统的整洁性和存储效率。以下是具体的操作步骤及代码实现。首先, 在 `/include` 目录下创建一个名为 `extend.func.php` 的文件...2025-03-31
-
在进行图片上传操作时,用户可能会遇到302错误以及带有ERROR提示的图片上传失败问题。这些问题可能由多种原因引发,因此本文将对这些情况进行整理,以帮助大家更有效地定位并解决问题。 第一种情况:图片文件本身损坏。 这种情况会导致系统返回ERROR错误提示,不过发生概率较低。如果怀疑是图片损坏导致的...2025-03-31
-
如果您正在寻找一种高效的方法来使用Dedecms模板搭建网站或论坛,那么本文将为您提供详尽的指导。从模板解压到最终完成配置,每一步都将清晰呈现,帮助您快速掌握整个流程。 第一步:解压Dedecms模板 将下载的Dedecms模板文件解压出来,确保所有文件完整无误。如下图所示: 第二步:获取D...2025-03-31
-
Dedecms Dede 附加表自定义字段与主表文章关联方法
在使用DedeCMS开发装修网站时,设计师和设计作品之间的关联是一个重要的功能需求。通常情况下,文章(作品)的内容部分存储在主表dede_addonarticle中,而自定义字段则存储在附加表dede_archives中。为了实现这一功能,可以采用以下两种方法。 ① 根据发布人调用相关文章; ...2025-03-31