行业资讯
  • 企飞科技签约深圳兴伦贸易有限公司,承接公司营销型网站建设与推广
  • 签约深圳兴伦贸易有限公司,承接公司营销型网站的建设与推广
  • 签约湖南万忠酒业有限公司,负责该公司2009年网站建设与推广业务
  • 签约北京市丰台区民兵训练基地,承接该基地网站建设和课件设计业务
  • 签约深圳市哈哈户外运动有限公司飞鹰少年俱乐部网站建设与推广任务
行业前沿技术和最新资讯
  • 更新时间: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
  •