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