動易SiteWeaver如何實現隨機文章功能
來源:程序員人生 發布時間:2013-11-11 02:15:13 閱讀次數:2630次
網(LieHuo.Net)教程 動易SiteWeaver本身沒有提供生成隨機文章列表的功能,也沒有相關的插件,要實現這個功能只能使用動易的自定義標簽了,下面提供兩種版本,Access版的和SQL版的,SQL版的是引用動易論壇小碼哥所寫的。
在頁面中添加一個隨機文章列表的好處是降低站內頁面相似度,避免對搜索引擎將頁面當做復制頁面來處理。那么要實現的功能是:輸出一個隨機文章列表,每次生成HTML頁面時,列表都不相同,每個頁面的列表也各不相同,當然,如果不生成靜態的話,那么每次刷新頁面,列表也會變化。
一、動易SiteWeaver+SQL數據庫實現隨機文章列表:
在后臺自定義標簽管理里新建一個函數標簽:
標簽名稱:{$MY_隨機文章} -可自定義標簽名稱
查詢語句:select top 10 ArticleID,ClassID,Title,UpdateTime from PE_Article where ChannelID in ({input(0)}) and ClassID in ({input(1)}) and DateDiff(day,UpdateTime,getdate())<7 and Deleted=0 and Status=3 Order by newid()
標簽內容:{Loop}{Infobegin}{$Field(2,Text,22,2,1)}{Infoend}{/Loop}
調用方法:在模板里適當位置加入:{$MY_隨機文章(頻道ID,欄目ID)}即可,頻道ID,欄目ID根據自己實際修改。
說明:
1、select top 10.... 中的10是要查詢的文章數,可以自己改,但建議不要改的太大。
2、如果不想按欄目調用,而是調用某一個頻道下的文章,那么可以把ChannelID in ({input(0)}) and ClassID in ({input(1)}) 修改為:ChannelID in ({input(0)}) ,相應的,調用標簽就是:{$MY_隨機文章(頻道ID)}了。
3、DateDiff(day,UpdateTime,getdate())<7....中的7是指查詢最近7天的文章,根據你的需要修改。
二、動易SiteWeaver+Access數據庫實現隨機文章列表:
在后臺自定義標簽管理里新建一個函數標簽:
標簽名稱:{$MY_隨機文章}-可自定義標簽名稱
查詢語句:select top 10 ArticleID,ClassID,Title,UpdateTime from PE_Article where ChannelID in ({input(0)}) and ClassID in ({input(1)}) and DateDiff("d",date(),UpdateTime)<7 and Deleted={$PE_False} and Status=3 Order by right(cstr(Rnd(-int(ArticleID+rnd(-timer())*100)))*1000*Now(),2);
標簽內容:{Loop}{Infobegin}{$Field(2,Text,44,2,1)}{Infoend}{/Loop}
調用方法:同上。
說明:同上。
在access中實現隨機真是太麻煩了,這個標簽的核心句子是:Order by right(cstr(Rnd(-int(ArticleID+rnd(-timer())*100)))*1000*Now(),2)這一句,在SQL中一個函數就能實現的東西在access中卻要套這么多層,不過這個句子保證了隨機性,具體效果可以看我這個欄目下的文章頁。
要說明的是:好的效果實在損失性能的前提下實現的,這句代碼效率很低,所以如果生成大量靜態頁面,建議在訪客較少的時候進行。一次盡量少生成一些,或者你也可以修改動易安裝目錄下的Config.asp文件中的:
Const MaxPerPage_Create = 10 '一次生成的數量,把他改小一些。
Const SleepTime = 3 '生成的間隔時間,把他改大一些。
又或者你不是很在乎每篇文章的隨機性,那么你可以精簡“Order by right(cstr(Rnd(-int(ArticleID+rnd(-timer())*100)))*1000*Now(),2) ”,期待高手寫出效率更高的句子,或者直接寫個插件出來,呵呵。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈