最近在做一个多地区分站的网站,但做了很久就没有写出来,于是迫不及待的寻找解决方案,大致确立了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

 

posted on 2013-04-23 17:34  badsun  阅读(404)  评论(0编辑  收藏  举报