用dedecms做文章類網站,一直有個讓人頭痛的問題:就是添加文章很容易添加到重復的,也就是之前添加過了,等過了一段時間又添加一篇,加文章大多數是從不同的網站復制添加的,所以很容易所到這個問題,就拿跟版網來說近200個欄目、幾萬的文章數據,添加重復的機率更大了,為角解決dedecms添加文章時重復內容,于是就有了以下內容
不得不說下dedecms自帶的檢測標題是否重復基本上毫無用處,“提示:系統已經存在標題為 'xxx' 的文檔”,該提示只會在標題文本100%匹配的情況下才會出現,現在收集的文章多數都是內容相同標題卻是偽原創了的,所以說根本匹配不了,下面就介紹下跟版網實現的方法吧,不算很好將就能用
打開/dede/article_add.htm在<head>后面添加jQuery庫
1<script type="text/javascript" src="/images/js/j.js"></script>
這個jQuery庫是1.2的,很老的版本了,你可以直接去官網下載較新的版本
在第二個</form>的前面添加
1<span id="checkArcRepeatedTips"></span>2<div style="margin:10px;"><label for="checkArcRepeated"><input type="checkbox" id="checkArcRepeated" checked="checked" />檢測內容是否有重復</label></div>3<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;"/>4<input type="button" value="保存" id="checkArcRepeatedBtn" style=" width:150px; height:; line-height:30px; background:green; font-size:14px; font-weight:bold; color:#fff; padding:10px; cursor:pointer;" />01<script type="text/javascript">02$(function(){03 $('#checkArcRepeatedBtn').click(function(){04 if($('#title').val() == ''){05 alert('標題不能為空');06 return false;07 }08 if($('#typeid').val() == '' || $('#typeid').val() == 0){09 alert('請選擇欄目');10 return false;11 }12 if($('#checkArcRepeated').attr('checked') != ''){13 var range = ue.selection.getRange();14 range.select();15 var checkWord = ue.selection.getText();16 if(!checkWord){17 alert('請隨機選擇一段文本進行文章重復檢測');18 isRepeat = true;19 return false;20 }else{21 $.ajax({22 type: 'get',23 url: 'checkArcRepeated.php?checkWord='+checkWord,24 async: false,25 beforeSend: function(){26 $('#checkArcRepeatedTips').text('請稍候...');27 },28 success: function(data){29 if(data == 'ok'){30 //ue.execCommand("inserthtml",checkWord+qmtx3Node)31 $('#checkArcRepeated').removeAttr('checked');32 $('#checkArcRepeatedTips').html(w);33 //$('#imageFieldBtn').trigger('click');34 isRepeat = false;35 }else{36 isRepeat = true;37 $('#checkArcRepeatedTips').html(data);38 }39 40 }41 });42 }43 if(isRepeat == false){44 $('#imageFieldBtn').trigger('click')45 }46 return false;47 }else{48 $('#imageFieldBtn').trigger('click');49 }50 });51 52});53</script>
刪除
1<input name="imageField" type="image" src="images/button_save.gif" width="60" height="22" class="np" border="0" style="cursor:pointer;"/>
Tips:有以上代碼有兩處
刪除
01if(document.form1.title.value=='')02{03 alert('文章標題不能為空!');04 return false;05}06if(document.form1.typeid.value==0)07{08 alert('請選擇檔案的主類別!');09 return false;10} 第四步:新建php文件
在/dede/目錄新建一個php文件,命名為checkArcRepeated.php,復制粘貼以下代碼保存
01<?php02/**03 * 檢測重復文檔04 *05 * @version 2013-6-5 Aniu QQ:2655101040 $06 * @link http://www.genban.org07 */08require_once(dirname(__FILE__)."/config.php");09$checkWord = $_GET['checkWord'];10$aid = $_GET['aid'];11if(empty($checkWord) || $cfg_check_title=='N'){12 echo '檢測功能未開啟或者所選文本為空,請聯系';13 exit;14}15$where = ' and main.arcrank>-1 and main.id=addon.aid';16if(!empty($aid)){17 $where .= ' and aid <>'.$aid; 18}19$sql = "SELECT aid FROM dede_addonarticle addon, dede_archives main WHERE body LIKE '%".$checkWord."%'".$where;20$row = $dsql->GetOne($sql); 21if(is_array($row)){22 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>';23}else{24 echo 'ok';25} 使用方法:在添加文章時,隨機選擇文章內容,選擇時注意不要選擇有格式的文字,比如加粗、字體大小顏色什么的,反正選擇純文本就好,然后點擊保存按鈕,這里程序會根據你所選擇的內容查找之前添加過的文章有沒有包含該段文字的,如果有的話會提示重復,你可以預覽或者編輯該重復文章,如果沒有重復程序會自動提交并保存文章
到這里dedecms避免添加重復文章的工具就差不多了,有兩點需要說下,該工具獲取編輯器內選中的文本是以百度編輯器API為基礎的,如果你的dedecms沒有整合百度編輯器,你可以查看之前跟版網寫的:dedecms整合百度編輯器(Ueditor)一(基本整合)非要用dedecm自帶的編輯器應該也是可以的,你可以去官網查看API
最后來一張圖吧
新聞熱點
疑難解答