[经验]创建支持多地区的分站功能

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

 

你可能感兴趣的:(创建)