網(LieHuo.Net)教程 DEDE使用火車采集器實現的自動實時發布文章和更新HTMl的功能。
一,為什么有這個想法:
使用火車發布文章,有三大不足。
需要登陸發布,受DEDE系統限制太大
就是一次發布的數量有限制,可能造成一次性發布太多遭K的惡果
如果網站首頁是靜態文件,則不能更新首頁,用戶就不知道網站的更新情況
如果沒有一臺可以一直運行的服務器,使用火車采集器的自動更新功能就不太現實
火車采集器的自動更新功能是收費的,呵呵。
自己需要咯,想挑戰一下自己咯等。
二,Do it.
首先想到,讓火車發布大量數據,且將文章屬性設置為未審核狀態,這個問題很簡單,使用DEDEv5.3.1時卻遇到DEDE的一個Bug。就是未審核的文章居然會在前臺顯示。先是對DEDE一氣臭罵,后來找了一些原因,發現了DEDEv5.3.1中的一個Bug.經修復后可以實現未審核的文章不在前臺顯示。1月13號到DEDE報告Bug以后,1月14號DEDE出的補丁中修復了這個問題,呵呵,所以,1月15號,就是今天咯,開始正式整理此開發文檔。
實際發現,發布和保存大量未審核文章不成問題,難在如何實現隨機激發發布功能。想了很久,覺得使用時間限制最好。當前臺JS調用了審核文章的鏈接,傳遞一個訪問用戶的信息,程序取得用戶的IP并保存為SESSION信息,此時,審核一篇文章并生成文章與首頁靜態文件。一個用戶在一定的時間內,只能激活限定數量的文章,且,發布時使用此用戶的IP信息,呵,挺個性的。
激活文章,生成文章靜態頁和首頁靜態文章,受網站模板的影響,可能會比較慢,則會出現首頁未生成完頁面就被關閉的問題。所以,最好的辦法是,在發布時文章時就生成文章靜態文件,然后把文章設置為未審核狀態。激活文章時則只需要很短的查詢。首頁或者列表頁盡量使用動態頁,這兩個問題不好處理,只能以此法代之。
完整的過程就是,發布文檔時,將文檔設置為未審核狀態;調用程序時,先判斷上一次查詢的緩存有沒有超時,如果超過緩存時間,則清除緩存,以顯示最新的文章。清除緩存以后,查詢出一定數量屬性為未審核的文檔,將Archives和Arctiny表中的未審核屬性取消,并更新一下文檔的Pubdate字段,實現一點隨機化。最后寫入緩存,禁止緩存有效期內的重復更新!
三,文件使用方法:
發布文檔時請把文檔屬性設置為未審核狀態,即發布時提交的文檔屬性參數為:arcrank=-1,這時為動態瀏覽;
如果你想生成靜態文檔,請將文檔狀態設置為正常瀏覽狀態,即arcrank=0;然后修改默認文檔添加程序。
如:arcticle_add.php,在文件最下邊“//生成HTML”處添加一段代碼:
//生成HTML
InsertTags($tags,$arcID);
$artUrl = MakeArt($arcID,true,true);
if($artUrl=='')
{
$artUrl = $cfg_phpurl."/view.php?aid=$arcID";
}
$dsql->ExecuteNoneQuery("UPDATE `cmsxx_archives` SET `arcrank`='-1' WHERE (`id`='$arcID');");
$dsql->ExecuteNoneQuery("UPDATE `cmsxx_arctiny` SET `arcrank`='-1' WHERE (`id`='$arcID');");
然后,上傳New.php到你的網站根目錄,到Dede后臺設置系統基本設置中,將性能選項卡中的arclist標簽調用緩存時間設置為一個合適的數,如3600表示一個小時刷新一次緩存。
最后,在模板文件頂部調用一段代碼即可:
“ <script type=”text/javascript” src=”{dede:global.cfg_cmsurl/}/new.php”></script> ”。
支持的參數:
no=每次隨機更新的數量,為空時默認為5;
typeid=欄目ID,為空則是全站數據
order=排序方式,支持Desc:倒序,Asc:順序,Rand:隨機,默認為隨機查詢。
如:“ <script type=”text/javascript” src=”{dede:global.cfg_cmsurl/}/new.php?no=100&typeid=2&order=desc”></script> ”
排序為Desc的時候,是按先發布的文章先審核的方式進行發布的,Asc反之,Rand為隨機。
四,這是我們在數據處理方面做的一個嘗試,也許這種新的模式會是一次突破。祝大家使用愉快。有Bug或者建議請回復于后。
點此下載文件:dedecms_v53_autonew
你可以任意轉摘“DEDE使用火車采集器實現的自動實時發布文章和更新HTMl的功能”,但請保留本文出處和版權信息。