近来在使用创力的CMS系统(V4.2)构建一个网站,发现要改的东东挺多,就花了点时间研究了一下网站源代码,公示如下,希望对各位看官有用!
首页Index.asp文件运行分析如下:
<!--#include file="Conn.asp"-->
<!--该文件中完成:
1、设置页面缓冲(response.buffer=true)
2、创建对象实例DB和CL(对应的类定义在inc/Cl_ClsSysTem.asp文件中)。
1)、对象DB为Cls_DataBase的一个实例,仅用来完成指定数据库的连接
(通过给ConnValue赋值-连接字符串,调用方法OpenConnection来完成)。
2)、对象CL为Cls_CMSSysTem的一个实例,创建CL对象时将触发Cl_ClsSysTem.asp文件中
Cls_CMSSysTem类的初始化过程,该过程完成网站运行时相关参数设置。其中主要设置
的一个变量为CacheName,该变量将作为缓存技术实现中的各缓存变量的基本构造变量。
3)、另两个重要的对象Template在包含Cl_ClsTempLate.asp文件时创建。
PageData在包含Cl_ClsPage.asp文件时创建。
3、定义网站各种基本常量(其中SysTemVersion的值
决定是否包含商城、影视模块功能,
其值0为 "普及版"或"免费版",
1为 "个人版",2为"标准版",
3为"专业版",4为"高级版",大于10为"高级专用版"。
4、设置数据库连接字符串-->
<!--#include file="Inc/Cl_Const.asp"-->
<!--Cl_Const.asp中包含有Cl_ClsSysTem.asp、Cl_ClsTempLate.asp、Cl_ClsPage.asp文件
1、Cl_ClsSysTem.asp文件为系统中最重要的类定义文件,定义有Cls_CMSSysTem和Cls_DataBase
两个类。包含该文件时,同时执行了一个常量定义操作(ClCMS_Version常量,为CMS版本信息)。
2、Cl_ClsTempLate.asp文件中定义有Cls_Template类。并在该文件被包含时执行文件中的对象
实例化命令创建对象Template。并触发类初始化事件,该事件中主要完成VBscript中正则表达式
对象的实例化创建,对象名为regEx。
3、Cl_ClsPage.asp中定义有类Cls_PageData,包含该文件时将实例化该类,生成PageData对象。
Cl_Const.asp文件除包含以上三个重要的文件外,还将完成文章ID、栏目ID等变量初始化工作。
同时,通过调用Cl.Get_WebSetting过程(CL为Cl_ClsSysTem.asp文件中Cls_CMSSysTem的一个实例)。
该过程 将读取数据库中CL_setup表中的字段信息,该信息包括网站的基本设置,如版本、上传文件
夹等。读出的信息保存在Webinfo数组变量中。
同时,在该过程中通过调用Load_Language、Load_ChannelList、Load_ClassList、Load_SpecialList、
Load_UserGroupList过程(均为Cl_ClsSysTem.asp文件定义的类方法),构造相应的XMLDOM对象以存储从
XML文件或数据库中读取出来的信息。这些信息包括频道、栏目、专题设置等,将以Application全局变量的形式保存在缓存中,供后续使用。-->
<!--#include file="Inc/Cl_Function_Public.asp"-->
<!--#include file="Inc/Cl_Function_Article.asp"-->
<!--#include file="Inc/Cl_Function_Soft.asp"-->
<!--#include file="Inc/Cl_Function_Photo.asp"-->
<!--#include file="Inc/Cl_Function_Movie.asp"-->
<!--#include file="Inc/Cl_Function_Product.asp"-->
<!--以上几个文件中包含有相应类型频道的专用标签对应的函数或过程定义,如/Cl_Function_Article.asp
中包含有showpicarticle、showarticle等标签的定义。-->
<%
Dim ChannelID
ChannelID=0
Call Cl.Get_ChannelSetting(ChannelID)
Rem Get_ChannelSetting方法中将通过调用Load_ChannelSetting方法创建一个Channel对
Rem 象,该对象为此前包含文件时创建的xmldom对象(以Application公共变量的形式存在
Rem 于缓存中)的一个子节点对象。之后将这一对象相关节点中数据(频道基本设置值)读
Rem 取出来放在各变量中。
if Cl.IsCreateHtml=1 Then
Rem 定时生成首页(本部分暂不分析了)
Dim CurrentHour,IndexFileUrlStr
CurrentHour = Hour(Now())
IndexFileUrlStr = Cl.WebDir & Cl.HtmlDir & "Index."&Cl.CreateFileExt
If InStr(","&Cl.Web_Info(17)&",",","&CurrentHour&",")>0 Then
Cl.Name = "CreateIndex"
If InStr(","&Cl.value&",",","&ChannelID&"_"&CurrentHour&",")=0 Then
PageData.Web_Index
TempStr=Template.ReplaceAllFlag(TempStr)
Cl.MakeHtml TempStr,IndexFileUrlStr
Cl.Name = "CreateIndex"
Cl.Value= Cl.Value & ","&ChannelID&"_" & CurrentHour
End If
End If
Response.redirect(IndexFileUrlStr)
End If
PageData.Web_Index
Rem 在Web_Index方法中通过调用Template.Load,读取数据库Cl_Css表中的CSS定义和Cl_Template表
Rem 中的模版代码,最终生成的TempStr中为包含有标签的首页html代码。
Response.write Template.ReplaceAllFlag(TempStr)
Rem ReplaceAllFlag方法将包含有标签的首页html代码中的标签替换成浏览器能处理的变量值及
Rem Cl_Function_Public.asp、Cl_Function_Article.asp、Cl_Function_Soft.asp、Cl_Function_Photo.asp
Rem 、Cl_Function_Movie.asp、Cl_Function_Product.asp中定义的函数。
CloseAllObj
%>
1198

被折叠的 条评论
为什么被折叠?



