自从DNN发布以来,用户对DNN皮肤机制一直以来都是褒贬不一,我对此也曾写过一些文章分析其中道理,有兴趣者不妨看看我之前的文章,目前DNN即将升级到5.0版本(代号为Cambrian),这将是一个具有里程碑意义的版本发布,时间大概是今年秋天,估计应该是在DotNetNuke OpenForce '08 大会之前吧,让我们拭目以待吧. 关心DNN皮肤的朋友们, 现在让我们先来看看皮肤机制将发生哪些变化呢:
1) 皮肤设计打包及其发布优化
我想这是dnn新手的弱项吧,刚开始学习dnn,都觉得DNN的皮肤功能很眩,可是想制作一个比较理想的皮肤还是比较难,可又苦于没啥好的教程,我想下一个版本的DNN应该对此优化了,主要包括几个方面:
<1> 皮肤对象格式简单化,易于上手
<2> 可同时打包Skin和Containers在同一个zip包中直接上传,便于管理
<3> 引入版本控制,也就是类似于模块,将新增一个manifest文件定义皮肤的相关属性及其版本信息,便于升级.
<4> 可添加皮肤包的相关信息,比如产品协议条款(a license agreement),升级说明(release notes)等等
2) 皮肤对象及其属性设置优化
往常我们定义皮肤属性时一般推荐新建一个对应的xml文件,然后在此定义属性,类似:
- <Object>
- <Token>[SEARCH]Token>
- <Settings>
- <Setting>
- <Name>showWebName>
- <Value>TrueValue>
- Setting>
- <Setting>
- <Name>ShowSiteName>
- <Value>TrueValue>
- Setting>
- Settings>
- Object>
这种方式是有缺点的,比如对皮肤设计人员来说xml格式是不友好的(not designer-friendly format),而且比较累赘,不清晰简洁.故此下一个版本将对此进行优化,全部转化为html格式,比如上边可转化为:
- <object id="SEARCH">
- <param name="ShowWeb" value="True" />
- <param name="ShowSite" value="True" />
- object>
如此一来,你的设计工作会比较简单化了,而且也优化了皮肤解析引擎.最终的效果如下:
- <dnn:SEARCH runat="server" id="dnnSEARCH" showWeb="True" showSite="True" />
3) [TEXT]皮肤对象(新)及皮肤对象的本地化支持
如果你看过我前边的文章,你会比较熟悉这个皮肤控件,这也就是下一代DNN皮肤即将引进的一个新宠儿,功能及其强大,它将基本实现DNN皮肤级别的本地化支持,其中还将包括DNN Token机制. 实现原理类似我开发的WindyText皮肤控件(请参看文章"
你需要么,dnn多语言解决方案?"),但要比它强大的多,比如你可以利用DNN核心Token机制实现皮肤级别的Page Title,Module Title的本地化支持,还有你可以添加第三方服务脚本在你的皮肤里边,例如Google广告或必须的脚本等等.
4) 页面解析优化
如果你熟悉皮肤设计,也许你会碰到这样的问题,就是你可能想在皮肤里边添加同一个皮肤控件的好几个实例,比如Containers下的ActionButton,你必须如此声明:
可是在DNN 5下的皮肤将对此优化,你只要注册一个声明即可,带来的是简洁和性能提升:
接下来我再分享一些皮肤资源:
1) Skinergy

这是可以实现自由应用样式的皮肤对象控件,类似DNN官方网站右上角的控件,归属于Speerio网站所有,了解更多信息不妨访问:
http://www.speerio.net
2) EngageCssSelector
类似于Skinergy,但似乎是作为模块开发出来,不妨试试,使用方法请查看
http://www.engagesoftware.com/Blog/EntryID/145.aspx,
demo请查看:
http://demo.engagemodules.com/, 在此我不提供下载,因为归属版权属于Engage,有兴趣者不妨去Engage站点下载(免费的).
3) Magic Toolbox

这是一家德国专门开发DNN的公司发布的免费皮肤控件,在此感谢小狼壮壮网友的共享,有兴趣请访问:
http://www.portalfabrik.net/