科讯系统多城市分站的系统修改
  • 分类:经验分享
  • 发表:2013-12-22
  • 围观(5,470)
  • 评论(1)

科讯CMS在ASP类CMS中是比较强大的,,,可惜它就是没有分站功能,官方分站的定制价是5000RMB,而且必须是商业版软件,加起来就是最少8000+RMB,,没办法,自己动手丰衣足食。经过努力,应该说基本完成了对科讯城市分站的改造工作。事实证明,科讯免费版也可以做分站。但是这样的修改会受到升级的限制,建议还是用商业版的。

本例以科讯9.05商业版有基础,使用的是ACC的数据库。免费版的可以做为参考。

项目需求是:在不修改现在模板、标签的情况下,实现网站企业、文章、信息等按不同城市显示,可按分站域名*.NameDomain访问网站且显示当前城市内容。后台开设分站管理员,分站管理员可管理相应分站的所有内容,但不能管理其它分站及总站内容。

具体的需求有:1、分站设置;2、来访URL判断;3、分站管理。

我的思路是:对来访的URL进行判断,按照后台设置的分站标识判断分站城市,然后使用Select筛选出对应城市的信息;后台管理员登陆时判断该管理员的分站ID,筛选出当前分站信息及设置。

最终实现的过程:

1、在Conn.asp里添加URL判断程序,判断来访URL是否存在或所对应的分站,生成Session和Cookie记录分站信息。

2、在

KS_Inc/Kesion.StaticCls.asp
KS_Inc/Kesion.Label.FunctionCls.asp
KS_Inc/Kesion.Label.SQLCls.as
KS_Inc/Kesion.Label.CommonCls.asp
KS_Inc/Kesion.Label.LocationCls.asp
KS_Inc/UserFunction.asp

这些文件中修改SQL语句的筛选判断,供前台显示出相应分站的信息。

3、在

Amdin/KS.Picture.asp
Amdin/KS.Shop.asp
Amdin/Index.asp
Amdin/KS.Picture.asp
Amdin/KS.Setting.asp
Amdin/KS.ItemInfo.asp
Amdin/KS.Admin.asp
Amdin/KS.Supply.asp

中修改关于后台管理的筛选条件。

4、其它的修改:

Item/ index.asp
Item/ list.asp
涉及到前台筛选时候用到。

User/User_MyShop.asp
User/User_Post.asp
前台用户管理时用到。

5、需要修改的数据库:

KS_Admin(控制后台管理员是否为分站管理)
KS_Article
KS_Blog
KS_Config (控制分站配置,当通过分站访问时,网站标题、LOGO等配置以分站为准,而不再是主站)
KS_Enterprise(主要是分级三类)
KS_DownLoad
KS_GQ
KS_Photo
KS_Product
以及所有文章类型的模型表

6、制作一个分站选择页面。

至此简单的需要已经实现了,其它的如广告系统、团购系统等都可以以这个思路进行修改。

后记:
这种方式不支持生成静态的,而且模板只能用统一的模板,只能用统一的栏目设置,如果要修改模板,理论上也是可以实现的,只是再修改程序吧。
如果数据量较大,首页就需要生成静态,那就会带来一个问题,设置进入分站了,但是前台显示的还是上一次访问城市的内容,原因是:生成静态后,后台有一个生成时间,在这个时间内,静态页面只有一个,所以不管访问哪个URL分站,内容都是显示那个静态页面里的内容。解决办法:修改主页的解析程序,生成主页时生成“分站IDindex.html”这种格式的静态页面,用户访问时根据分站ID调用相应的页面即可。这个功能在/KS_cls/Kesion.AppCls.asp文件中进行修改。
具体语句也很简单:

把ifilename = KS.Setting(5) 改成

IF City_TF = 1 Then '如果开启分站则生成 城市ID&index.html 的文件名
ifilename = Request.Cookies("CityFz")("id")&KS.Setting(5)
Else
ifilename = KS.Setting(5)
End if

科讯用分站程序修改很多,根据自己的功能需求,需求的越多,修改的也就越多,修改到最后发现,对于公司运营来说,官方的5000费用也还算合理的。

Top