[MVC]Oxite分析之Skinning

baacloud免费翻墙vpn注册使用

change set:42944

download :http://oxite.codeplex.com/SourceControl/ListDownloadableCommits.aspx

Oxite 中可以非常方便的切换皮肤(Skinning),并且前台皮肤(Site Skin)和后台皮肤(Admin Skin)都可以切换。Oxite的皮肤包括三部分:CSS + images, scripts and views。注意这个views就是MVC中的View部分,这样就带来更大的灵活性。这里提一下,Skin的设置会影响到ViewEngine在什么位 置搜索View文件。官方也有关于Skinning的介绍,不太详细:http://oxite.codeplex.com/Wiki/View.aspx?title=Skinning
一、设置Skin

在Oxite管理后台的站点设置里可以设置前台和后台皮肤。进入后台点击"Settings"菜单下的"Site"子菜单,进入"Edit Site"页面:

222 
在Skins Path字段中设置存放各个Skin的总目录,默认值是/Skins。注意这个路径是虽然是绝对路径,但它是站点所在虚拟目录的根目录下的Skins目录,也就是说/Skins实际上对应的是~/Skins。
假设HomeController下的Index这个Action的View的搜索,
Skins Path 字段值不为空时并且Site Skin(或Admin Skin)为空时,将会搜索~/Skins/Views/Home/和~/Skins/Views/Shard/目录;如果搜索不到,将会搜索~ /Views/Home/和~/Views/Shard/目录。
注意:目前Oxite版本尚未支持Scripts Path和Styles Path字段,也就是说你的设置将暂时不会有效果。我通过源码分析的,尚未测试设置过。
Site Skin是用来设置具体的Skin的,默认为空。这种情况下,可以回头看看我们分析Skins Path字段时所说的。我们如果直接把根目录的Styles、Scripts、Views这三个目录移到Skins目录下,站点将一切正常。
如 果我们为Site Skin设定一个值的话,比如MySkin。在不移动官方源码的情况下,站点不会有任何变化;我们如果直接把根目录的Styles、Scripts、 Views这三个目录移到Skins目录下,站点将仍然正常;如果我们在Skins目录下建立一个MySkin目录,把根目录的Styles、 Scripts、Views这三个目录移到该目录下,站点将仍然仍然正常。为什么呢?原因是Site Skin设定一个值后,ViewEngine搜索Views时候,只是多了两个搜索路径。比如HomeController下的Index这个 Action,将会首先搜索:~/Skins/MySkin/Views/Home/和~/Skins/MySkin/Views/Shard/,如果搜 索不到,将会搜索~/Skins/Views/Home/和~/Skins/Views/Shard/目录;如果还是搜索不到,将会搜索~/Views /Home/和~/Views/Shard/目录。
另外,如果Skins Path 字段设置为空,Site Skin字段设置为MySkin。在这种情况下,View搜索的路径是这样的:
~/MySkin/Views/Home/ –> ~/MySkin/Views/Shard/ –> ~/Views/Home/ –> ~/Views/Shard/
Skins Path 字段和Site Skin字段是可以设置为更复杂的路径,我觉得完全没必要。参考Oxite默认的配置,Skins目录下放置各种Skins已经足够用了。
二、Oxite如何实现Skinning

待续…

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏