自从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)等等
<1>皮肤对象格式简单化,易于上手
<2>可同时打包Skin和Containers在同一个zip包中直接上传,便于管理
<3>引入版本控制,也就是类似于模块,将新增一个manifest文件定义皮肤的相关属性及其版本信息,便于升级.
<4>可添加皮肤包的相关信息,比如产品协议条款(a license agreement),升级说明(release notes)等等
2)皮肤对象及其属性设置优化
往常我们定义皮肤属性时一般推荐新建一个对应的xml文件,然后在此定义属性,类似:
- <Object>
- <Token>[SEARCH]< SPAN>Token>
- <Settings>
- <Setting>
- <Name>showWeb< SPAN>Name>
- <Value>True< SPAN>Value>
- < SPAN>Setting>
- <Setting>
- <Name>ShowSite< SPAN>Name>
- <Value>True< SPAN>Value>
- < SPAN>Setting>
- < SPAN>Settings>
- < SPAN>Object>
这种方式是有缺点的,比如对皮肤设计人员来说xml格式是不友好的(not designer-friendly format),而且比较累赘,不清晰简洁.故此下一个版本将对此进行优化,全部转化为html格式,比如上边可转化为:
- <object id="SEARCH">
- <param name="ShowWeb" value="True" />
- <param name="ShowSite" value="True" />
- < SPAN>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,你必须如此声明:
Your Container Skin
@ Register TagPrefix="dnn" TagName="ACTIONBUTTON1" Src="~/Admin/Containers/ActionButton.ascx" %>
@ Register TagPrefix="dnn" TagName="ACTIONBUTTON2" Src="~/Admin/Containers/ActionButton.ascx" %>
<
dnn
:
ACTIONBUTTON1
runat="server" id="dnnACTIONBUTTON1" CommandName="AddContent.Action" DisplayIcon="True" DisplayLink="True" />
<
dnn
:
ACTIONBUTTON2
runat="server" id="dnnACTIONBUTTON2" CommandName="SyndicateModule.Action" DisplayIcon="True" DisplayLink="True" />
可是在DNN 5下的皮肤将对此优化,你只要注册一个声明即可,带来的是简洁和性能提升:
Your Container Skin
@ Register TagPrefix="dnn" TagName="ACTIONBUTTON" Src="~/Admin/Containers/ActionButton.ascx" %>
<
dnn
:
ACTIONBUTTON
runat="server" id="dnnACTIONBUTTON1" CommandName="AddContent.Action" DisplayIcon="True" DisplayLink="True" />
<
dnn
:
ACTIONBUTTON
runat="server" id="dnnACTIONBUTTON2" CommandName="SyndicateModule.Action" DisplayIcon="True" DisplayLink="True" />
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15040802/viewspace-422960/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/15040802/viewspace-422960/