生成静态页面方法(2)ASP篇

新鲜出炉:ASP生成HTML静态文章内容带分页方法2008-09-26 02:38     在参考了网上的一些资料后,终于完成了文章内容页生成静态带分页的功能(使用模板),文章内容从哪分页完全由文章添加者自已设定,性能及安全方面未加考虑,呵呵。
    1、相关变量参数:
  strDir    用于保存.html文件的文件夹路径
  htmlwrite            FSO对象,用于生成.html文件
  arrcontent         按分页标签分割的文章内容数组
  InnerPageNum 统计内容的页数
  rollnum当前第(rollnum+1)页
  pagelist             分页页码
  strTemplate      存放模板内容
  strTemp            模板内容备份
  $page_break$ 内容分页标签
 <%     '========生成内容静态页======
on Error resume next
Set fso = Server.CreateObject("Scripting.FileSystemObject")
'=====用于保存静态文件的文件夹路径名称,这里我按自己的项目设定了====      
strDir=SITEROOT&"/"&NewsHtmlFile&"/"&year(now)&"-"&month(now)
'======生成静态文件保存文件夹=====
if not fso.folderexists(Server.MapPath(strDir)) then fso.CreateFolder(Server.MapPath(strDir))
set fso=Nothing
if Err=0 then
 Dim fso,htmlwrite ,arrcontent,InnerPageNum,rollnum,pagelist,strTemplate,strTemp
 '===读取模板文件,我前面的文章关于ASP生成静态的,有这个数据表的内容===
 sql="SELECT tp_content FROM [KrTemplate] WHERE tp_default=1 AND tp_type='新闻内容页模板'"
 Set rs=Conn.Execute(sql)
 if not rs.eof then
  strTemplate=rs(0)
 end if
 rs.close
 '======备份模板文件,避免模板文件被改写=====
 strTemp=strTemplate
 '======文章数据表=====
 sql="SELECT * FROM [KrNews] WHERE news_html=0 ORDER BY news_date DESC"
 Set rs=Conn.Execute(sql)
 '======循环读取所有要生成的文章信息======
 do while not rs.eof
  news_keywords=rs("news_keywords")
  news_content=rs("news_content")
  news_tips=rs("news_tips")
  news_name=rs("news_name")
  news_from=rs("news_from")
  news_date=rs("news_date")
  news_id=rs("news_id")
  '====匹配文章内容,如果出现分页标签,则按如下处理,否则按普通生成方法处理===
  if Instr(news_content,"$page_break$") then
   '===如果文章URL要存入数据库,那么这里存入的地址就为文章分页后的第一页的路径,
   '===即为下面的URL地址加上第一页的标志,我这里存入数据库的地址是这样的
   ' ===URL=URL&"_1.html"
   URL=SITEURL&strDir&"/news_"&news_id&""
   '======对分页信息的预处理=======
   '=====将按分页标签分割的文章内容存入数组arrcontent=====
   arrcontent=split(news_content,"$page_break$")
   '=====得到文章分割后所得的页数=====
   InnerPageNum=ubound(arrcontent)
   pagelist=" "
   '=====循环得到页码======
   for rollnum=0 to InnerPageNum
    pagelist=pagelist & "<a href="""&URL&"_"&(rollnum+1)&".html"" target=""_self"">["&(rollnum+1)&"]</a> "
   next
   for rollnum=0 to InnerPageNum
    '======还原被改写的模板,这里不注意会生成相同的文件======
    strTemplate=strTemp
    strTemplate=Replace(strTemplate,"$keywords$",news_keywords)
    strTemplate=Replace(strTemplate,"$news_tips$",news_tips)
    …………   '略,其他一样写法 
    '===替换文章内容,并添加分页页码==== 
    strTemplate=Replace(strTemplate,"$news_content$",arrcontent(rollnum)&"<br><center>分页:"&pagelist&"</center>")
    '====要生成的HTML页面路径及名称======
    Address=strDir&"/news_"&news_id&"_"&(rollnum+1)&".html"
    '======调用adodb.stream方法生成静态页面,此为自定义方法,附在文章后面===
    WriteToTextFile Address,strTemplate
    '======(可选择)FSO方法生成静态页面
    'Set fso = Server.CreateObject("Scripting.FileSystemObject")
    'Set htmlwrite=fso.CreateTextFile(Server.MapPath(Address),true) '// 创建要生成的静态页 
    ' htmlwrite.WriteLine strTemplate '// 写入网页内容
    ' htmlwrite.close
    ' set htmlwrite=Nothing
    ' set fso=Nothing  
   next
  else
   strTemplate=Replace(strTemplate,"$keywords$",news_keywords)
   strTemplate=Replace(strTemplate,"$news_tips$",news_tips)
   strTemplate=Replace(strTemplate,"$sitename$",SITENAME)
   …………
   strTemplate=Replace(strTemplate,"$news_content$",news_content)   
   Address=strDir&"/news_"&rs("news_id")&".html"
   WriteToTextFile Address,strTemplate
  end if
 rs.movenext
 loop
 rs.close
end if
     '=======ADODB.Stream生成文件函数=========
Sub WriteToTextFile (FileUrl,byval Str)
 set stm=server.CreateObject("adodb.stream")
 stm.Type=2 '以本模式读取
 stm.mode=3
 stm.charset="GB2312"
 stm.open
 stm.WriteText str
 stm.SaveToFile server.MapPath(FileUrl),2
 stm.flush
 stm.Close
 str=""
 set stm=nothing
End Sub
%>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值