DNN皮肤设计
关于DNN皮肤的设计实现,包括对DNN皮肤机制的优化及其Web 2.0下如何设计纯CSS的皮肤。。。
何谓CSS hack ? 由于不同的浏览器,比如IE6,IE7,Mozilla Firefox等,对CSS的解析原理不一致导致生成的页面效果千差万别,此时我们需要生成不同的样式让其兼容不同的浏览器,并得到理想的效果。在此分享一些CSS Hack,希望对大家有所帮助。
Read the rest of entry »

PNG 是20世纪90年代中期开始开发的图像文件存储格式,其目的是企图替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性。流式网络图 形格式(Portable Network Graphic Format,PNG)这一名称来源于非官方的“PNG's Not GIF”,是一种位图文件(bitmap file)存储格式,读成“ping”。PNG用来存储灰度图像时,灰度图像的深度可多到16位,存储彩色图像时,彩色图像的深度可多到48位,并且还可 存储多到16位的α通道数据.
Read the rest of entry »
自从DNN发布以来,用户对DNN皮肤机制一直以来都是褒贬不一,我对此也曾写过一些文章分析其中道理,有兴趣者不妨看看我之前的文章,目前DNN即将升级到5.0版本(代号为Cambrian),这将是一个具有里程碑意义的版本发布,时间大概是今年秋天,估计应该是在DotNetNuke OpenForce '08 大会之前吧,让我们拭目以待吧. 关心DNN皮肤的朋友们, 现在让我们先来看看皮肤机制将发生哪些变化...
Read the rest of entry »
上一篇文章简单解析了DNN多语言解决方案,其中提到了一个皮肤级别的本地化支持.这篇文章接着简单分析如何定制开发自己的皮肤对象(在dnn称之为Skin Objects),不妨来看看我们如何给DNN默认的登陆注册链接皮肤对象做个小变身.首先还是先描述一下需求,例如有客户需要在设计皮肤时可以在登陆注册这两个链接增加一个小图象提示,起到修饰美观的作用,最终效果如图:
如何开发呢?其实对我来说,开发DNN的原则就是如何节省代码量,同时可以让DNN物尽所用,但又不能影响以后的升级.我想这个理念在前几篇文章都阐述得淋漓尽致(比如浅谈如何做到dnn物尽所用(二), 浅谈如何做到dnn物尽所用).有兴趣者不妨回头看看,也许你也会得到些许提示的.回到正题,首先我想到就是利用原有的登陆注册这两个链接皮肤对象,再结合DNN自带的CommandButton(文章"再谈dnn的物尽所用(三)"对此有所解析)这一用户控件就可以实现我们的需求了.那我们就开始吧,还是我之前提到开发皮肤对象的步骤:
1) 在网站根目录下的admin/Skins文件夹里创建一个UserControl,比如现在新增dnnsunUser.ascx和dnnsunLogin.ascx(请注意该文件夹下的代码不需要重新编译,如果你是以站点形式发布的).
2) 创建对应的资源文件(dnnsunUser.ascx.resx, dnnsunUser.ascx.zh-CN.resx及其dnnsunLogin.ascx.resx,ascx.resx, dnnsunLogin.ascx.zh-CN.resx)
其中上述步骤你可以直接拷贝默认的登陆注册链接皮肤对象,然后重命名即可.接下来就是替代我们即将加入的CommandButton,在页面中注册并添加实例:
dnnsunLogin.ascx
@ Register TagPrefix="dnn" Assembly="DotNetNuke" Namespace="DotNetNuke.UI.WebControls" %>
<dnn:CommandButton ID="cmdLogin" runat="server" CssClass="SkinObject" CausesValidation="false"/>
或
dnnsunUser.ascx
@ Register TagPrefix= ...
Read the rest of entry »
目前dnn多语言解决方案是我这段时间研究的重点, 我接下来也许会写几篇相关文章阐述这些问题.
切入正题, 本地化是ASP.NET的特性, 无疑dnn也会直接支持, 但是事实上并不是很乐观, 因为dnn本身也只是在表面上作些文章吧了, 如果你想利用dnn实现多语言门户(Portals), 那你可能想错了, 除非你重新开发或在模块级别上定制的开发支持多语言. 那dnn究竟支持多语言到何种程度呢? 让我慢慢道来, 其实dnn默认支持的多语言只局限于页面标签(Tags,Token etc), 比如登陆链接, 编辑模块时的字段Label等等, 而这些并非我们通常理解的内容本地化(多语言支持). 当然你可以通过下列两种解决方案来实现:
1) 模块级别的多语言开发,但你的内容可能需要存储好几个版本(根据你站点支持的语言总数) 2) 站点级别的多语言开发,也就是你需要发布好几个站点(根据你需要支持的语言总数)目前在DNN模块市场也有一些模块按照第一种思路做到了内容上支持多语言,比如:1) MLSkinHelper, PageLocalization Module,Language Selector skin object 等等http://www.apollo-software.nl/Home/tabid/36/language/en-US/Default.aspx最经典的范例就是http://declic-video-fx.com/,它利用apollo-software相关模块实现了多语言站点,可以说基本上实现了多语言支持的所有功能.2) Localization Extensions: Easily implement multilingual portals http://www.adequation-dotnetnuke.com/en/AboutUs.aspx该站点的公司主页就是利用来实现了多语言支持,请访问http://www.adequation-informatique.com/en/Home.aspx3) 这是一个免费的模块Magic Content,同时也是DNN Forget下的一个新模块,该模块属于proeder.network.consult公司.Magic Content is a multi-lingual content publishing module for the DotNetNuke ...
Read the rest of entry »
最近加班加点,终于在10天之内把客户这一网站给整出来,真是不容易啊,在此弄个截图以资鼓励我们团队的斗志, :)

在优化DNN的过程中我们可能注意到这一点, 就是我们的皮肤文件一般都写在同一个文件,可能是skin.css或container.css, 也就是说不论我们页面加载是否应用到该样式文件里边的所有属性,我们总会必须加载这样一个CSS样式文件,尽管皮肤有很多属性并不是我们所需要的,但有时我们所创建的皮肤可能会包含好些个类别的skin(也就是我们通常提到的主题theme), 比如专为首页显示的xx_Home.ascx, 专为管理页面的xx_admin.ascx, 一般的xx_skin.ascx等等, 显然这些页面可能是不同的布局设计, 不同的样式定义, 如果这些不同的样式都在一个skin.css里定义的话, 那肯定导致该文件冗赘, 并且不能达到不同的样式的目的(前提是你使用同样的class样式定义). 今天准备在此分享一个针对此类问题的解决方案, 简约而实用, 采用此方案将不会造成数据加载的不必要负荷, 提高页面的加载速度, 从而达到我们加速DNN的目的。
Read the rest of entry »
自从DNN 4.4版本开始, DNN主要的重心转移到性能和优化方面,由此引入了一系列的优化措施和功能的改进, 如今的DNN已是今非昔比。而在跟Web标准的靠拢方面,DNN也做出了一定的努力,比如这篇文章即将提到doctype的概念, 在文章中将详细说明DNN中doctype的用途及其优势,以此对应的优化等等。
Read the rest of entry »
是的,DNN是通过外部样式表来规划页面布局和交互界面设计的,其途径就是把所有样式文件拆分到不同的,具体的样式单(比如skin.css,portal.css),而在页面的加载时是按照一定的优先级顺序来界定的,从而达到后一样式表能够覆盖前一样式的作用,实现我们所熟悉的CSS样式继承关系。其优先级排列如下(靠后者可覆盖前者的样式):
1) Modules – 模块控件样式,一般定义为module.css,可选项。
2) Default – 默认网站主机样式(default.css)
3) Skin – 皮肤样式,可取名为skin.css 或 skinfilename.css
4) Container –容器皮肤样式,可取名为container.css 或 containerfilename.css.
5) Portal –自定义网站管理级别的样式,这是最后一级的样式定义,一般为空定义(portal.css)
具体对这些样式的解析请查看我上一篇文章,而以下相关链接则是解析了一下如何在DNN合适使用CSS样式,在哪些地方是最安全的(升级时不受影响等),哪些地方是最有效的等的运用,有兴趣者不妨看看。
相关链接:
同时在此推荐一本DNN Skin-Design参考手册,它主要介绍了skin的制作及其所有skin占位符的解析和用户,其中包括SolpartMenu的所有属性设置的参考,是一本不可多得的skin资源手册,如果你想设计自己的skin,如果你想把自己的网站绚起来,那么你不妨拿着这本参考手册照猫画虎一般,最终你会发现其实DNN Skin是如此简单…. Enjoy!
下载地址
在DNN里,因为存在皮肤主题及插件模块的概念,故而衍生出一系列的产物,比如Tab Skin(页面皮肤), Container Skin(容器皮肤), Module Template(模块模版)等等,而这一切都是DNN布局显示所需要的.那DNN是如何处理这些文件所包含的样式?
Read the rest of entry »