關於產生HTML檔案的新聞系統

來源:互聯網
上載者:User
產生html|新聞系統
  一般的傳遞ID值的新聞系統見得比較多,製作起來也不是很複雜。
但是我們在新浪或是其它的門戶類網站看到到的新聞不是用ID傳遞的,而是一個HTML或是Shtml檔案,難道手工加上去的嗎?當然不是了,其實這用到的是ASP中的FileSystemObject對象的方法。
  接著往下說說如何?這一功能。
  首先考慮檔案名稱的格式及檔案的存放路徑。
  路徑可以這樣假設:
  存放的路徑:如果把所有的HTML檔案或是所有的SHTML檔案都放在同一目錄下,當同時訪問的人增多以後,勢必會影響伺服器正常的運行,所以明智的方法就是把這些檔案按加入的日期進行分類。
  檔案名稱的格式:
  為了避免出現重名的檔案,一般的命名規則是當天的日期+時間+隨機數+尾碼名。
function makefilename()
fname = now()
fname = replace(fname,"-","")
fname = replace(fname," ","")
fname = replace(fname,":","")
fname = replace(fname,"PM","")
fname = replace(fname,"AM","")
fname = replace(fname,"上午","")
fname = replace(fname,"下午","")
randomize
ranNum=int(90000*rnd)+10000 '產生隨機數
fname = fname&fanNum
makefilename=fname & ".shtml"
end function
  這段函數就可以產生所需要的檔案名稱及產生的檔案的尾碼名,當前的尾碼名為.shtml,您也可以改成HTML或是ASP。
  剛提到的是檔案的命名,現在再來說一下檔案的存放路徑!
  前面提到了,每個檔案按加入的日期進行分類,那如何確定路徑呢?同樣用FSO產生。
  用FSO中的folderExists方面來判斷目錄是否存在,如果存在就不需要重建立了,只需將HTML寫入該目錄下(這是後話了)。如果folderExists方法取得的值為false則表示目錄不存在,就要用createfolder方法產生了。
formPath=datepart("yyyy",now())&"_"&datepart("m",now())&"_"&datepart("d",now()) '建立目錄名,產生的檔案將按存放在此處
set objfso = server.createobject("scripting.filesystemobject")
if not objfso.folderexists(server.mappath(formPath)) then '如果該目錄不存在
objfso.createfolder(server.mappath(formPath)) '建立一個檔案夾
end if
set objfso = nothing
  目錄就這樣建立了。每次FSO組建檔案時都進行判斷一下,不過這樣不知道會不會影響效率,大家可以有什麼好的想法可以談一談。
  先看一個模板:
<html>
<head>
<title>檸檬樹下----[title]</title>
</head>
<body>
[news_title]
<br>
作者:[author] 來源:[source] 加入日期:[add_time]
<br>
[content]
</body>
</html>
  這是一個最簡單的模板了,裡面的用[]括起來的是什麼東東呢?那就是即將要被替換的新聞標題、內容、作者等等。
  先不管這個模板漂不漂亮,先寫入資料表,在後面的用的喲!
  下面將談談核心部分了,如何產生HTML的呢?
  把前面的模板寫入資料表,這裡給出表的結構,當然是簡單的一種
Template表
T_ID 'ID值,自動編號
T_name '模板名稱
T_content '模板代碼
  在編輯器中寫好新聞後,在處理頁裡的執行過程是這樣的:
  1、取得表單中的各變數值
  2、從Template表中取得模板代碼
  3、將模板中的[]括起來的東東替換成相應的表單值,如[autor]就替換成表單中取得的作者名
  4、FSO產生HTML檔案
  5、將新聞寫入資料表(為什麼要寫入?以便以後的編輯)
'這裡查詢範本
strsql = "select * from templet where T_name='"&templet_name&"' "
objrs.open strsql,conn,1,1
content = objrs("content")
objrs.close
'開始替換,其中的title/strcontet都是從表單中取得的,前面的代碼略去
content = replace(content,"[title]",title)
content = replace(content,"[content]",strcontent)
content = replace(content,"[source]",source)
content = replace(content,"[author]",author)
content = replace(content,"[add_time]",now())

'然後將新聞寫入資料表
strsql = "insert into news---------------"
conn.execute strsql,intno '執行之
if intno <> 0 then '如果執行結果不為0表示執行成功,則開始寫入了
set objfso = server.createobject("scripting.filesystemobject")
formPath=datepart("yyyy",now())&"_"&datepart("m",now())&"_"&datepart("d",now()) '建立目錄名,產生的檔案將按存放在此處
filename = server.mappath(formpath& "/" &makefilename)
if objfso.folderexists(server.mappath(formPath)) then '如果該目錄存在
Set file = objfso.CreateTextFile(formpath&"\"&fname)
file.WriteLine content
file.close
else
objfso.createfolder(server.mappath(formPath)) '建立一個檔案夾
Set file = objfso.CreateTextFile(formpath&"\"&fname)
file.WriteLine content
file.close
end if
set objfso = nothing
else
response.write "寫入資料失敗!"
response.end
end if
  編輯時無非就是重新從資料表中調用該新聞內容,update後重新用FSO寫入!


相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。