最近在做一个多地区分站的网站,但做了很久就没有写出来,于是迫不及待的寻找解决方案,大致确立了2种实现方式:
1.开发一个分站的功能
2.单独做一个网站
感觉工作量很大,于是搁浅了,一次偶然看到一篇文章:扩展网站支持多地区分站,基于OPS.CMS(原文地址:http://blog.ops.cc/webtech/sabvm.html)
我感觉他的实现思路比较好,通过字典的方式,以下是它实现的方法代码:
引文:
2.编写支持分站的代码
我们创建一个新的类型文件,并存放到网站的/App_Code/目录下,在网站编译过程中会被自动编译成程序集.我们通过一个实例来说明:
code:0345.cc
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web; using System.Web.Mvc; using System.Web.Routing; using Ops.Xml; public class QtEduController:Ops.Cms.Web.Mvc.CmsController { private static SettingFile file = new SettingFile(AppDomain.CurrentDomain.BaseDirectory + "config/label.conf"); public static void InitRoute(RouteCollection rt) { rt.MapRoute("SubSchool", "{area}/", new { controller = "QtEdu", action = "SchoolIndex" }, new { area = "^[a-zA-z]{2}$" } ); } public string SchoolIndex(string area) { if (file.Contains(area)) { return base.RenderTemplate("/default/school", new { name=file[area], area=area }); } else { return base.Category(area, 1); } } }
通过继承Ops.Cms.Web.Mvc.CmsController类,我们可以使用模版功能,可以调用其包括的文档,分类,搜索等页面呈现功能. 我们使用了内置的一个字典文件,这个文件的路径为:/config/label.conf
3.添加字典
登陆系统后台,在高级管理->视图管理->文件管理中,选择字典文件,并编辑
在settings节点中添加一些区域项,添加完的文件如下:
1: <?xml version="1.0" encoding="utf-8"?>
2: <settings>
3: <add key="cc">禅城</add>
4: <add key="gz">广州</add>
5: <add key="sz">深圳</add>
6: <add key="zh">珠海</add>
7: <add key="dg">东莞</add>
8: </settings>
4.编辑视图
编辑我们指定的视图,将要呈现的内容表示出来.
文章同时给出了一个地址供我们查看:
地址:www.xmwebs.com/gz/ www.xmwebs.com/sz/
他山之石,可以攻玉.真的很有道理,我在基础上做出了一个非常灵活的多地区分站功能,感兴趣的朋友可以和我QQ联系:188867734