- 更新时间:2009-11-5
- 返回查看上一篇文章:utf-8编码下的网站静态化处理(一)
在上一章节中,我们已介绍了news.html模板的制作。下面来介绍news.asp如何生成html文件。
首先定义如何读写文件。在这里我们采用adodb.stream来处理文件读入,这样就可以解决在utf-8编码下面,fso 文件读取会生成乱码的问题。请看代码:
<%
'公共函数与页头页尾
Function ReadFromUTF(TempString,CharSet) 'TempString要读取的模板文件路径; Charset是编码
Dim str
Set stm = server.CreateObject("adodb.stream")
stm.Type = 2 'adTypeBinary=1 adTypeText=2
stm.Mode = 3 'adModeRead=1 adModeWrite=2 adModeReadWrite=3
stm.Charset = CharSet
stm.Open
stm.loadfromfile Server.MapPath(TempString)
str = stm.readtext
stm.Close
Set stm = Nothing
ReadFromUTF = str
End Function Function WriteToUTF(content,sFilen)'将替换后的内容写入HTML文档,content为替换后的字符串,filename为 生成的文件名
Set objStream = Server.CreateObject("ADODB.Stream")
With objStream
.Open
.Charset = "utf-8"' //编码,这里你可以改成任何编码
.Position = objStream.Size
.WriteText = content' //模版+数据 写入内容
.SaveToFile server.mappath(sFilen),2' //生成文件路径
.Close
End With
Set objStream = Nothing
End Function '从数据库中读取模文件 '定义通用变量
dim filen,sFilen,m_header,m_foot,moban,title,keywrods,description
'首先取得头尾文件
sql="select top 1 * from headerfoot "
rs.open sql,conn,1,1
If Not (rs.eof And rs.bof) Then
rs.movefirst
m_header=rs("m_header")
m_foot=rs("m_foot")
Else
response.write ""
End If
rs.close
%> 接下来就是替换了。我们先把变量内容定义好或者从数据库中预读取出来。
<%
title="网站建设资讯-深圳建站-企飞科技,专业网站设计"
keywords="网站设计资讯,网站制作,网站建设"
description="资讯中心,IT行业资讯汇总。" '直接读入模板文件
filen="../template/news.html"
moban=ReadFromUTF(filen,"utf-8")'注意编码方式 '严格检查字段是否为null,防止替换错误
If title=Null Then title=""
If keywords=Null Then keywords=""
If description=Null Then description=""
if m_header=null then m_header=""
if m_foot=null then m_foot="" '开始模板替换
moban=Replace(moban,"{$title}",title)
moban=Replace(moban,"{$keywords}",keywords)
moban=Replace(moban,"{$description}",description) '直接替换页头,页尾
moban=Replace(moban,"{$header}",m_header)
moban=Replace(moban,"{$foot}",m_foot) '新闻读取,排版在这里我就不详述了,自己在CSS中定义好就是了 Dim news_str
news_str=""
'读取所有新闻
sql="select * from news order by N_date desc"
rs.open sql,conn,1,1
If Not (rs.eof And rs.bof) Then
news_str=news_str &"<ul>"
For i=1 To rs.recordcount
If rs.eof Then Exit For
news_str=news_str &"<li class='news_left'><strong><a href='"& rs("N_link") &"' title='"& rs ("N_Name") &"'>"& rs("N_Name") &"</a></strong></li>"
news_str=news_str &"<li class='news_right'>"& FormatDateTime(rs("N_date"),2) &"</li>"
news_str=news_str &"<li class='news_memo'>"& rs("N_Memo") &"</li>"
news_str=news_str &"<li class='clear'></li>"
rs.movenext
Next
news_str=news_str &"</ul>"
Else
response.write ""
End If
rs.close Set rs=Nothing
Set conn=Nothing
'替换新闻
moban=Replace(moban,"{$news}",news_str) '下面是生成静态文件
sFilen="/news.html" '定义要生成的静态文件输出路径。在这里是直接生成在根目录下面
Call WriteToUTF(moban,sFilen) '调用文件输出函数,生成静态文件
If Not Err Then Response.Write "<script>alert('成功生成静态文件');window.opener=null;window.close ();</script>"
response.End() %> 通过以上步骤,静态文件就生成了。对于模板更改之后,如何批量化修改的问题,这个你可以在添加新闻,修改新闻的时候,写入静态化代码就是了。企飞科技(http://www.qfkeji.com)的网站就是按个思路来实现静态化处理的。说了一大堆,有的人可能还是会不清楚,恨不得我能提供一个完整的实例。说实在的,“纸上得来终觉浅,绝知此事要躬行”,我在这里提供思路和注意事项,然后再去实践一下,好好理解代码含义,才能真正让他变成自己的东西,才能真正做到举一返三。 - 作者:企飞科技
- 原载:http://www.qfkeji.com
- 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。
- Tags:静态生成HTML



