如何制作支持XHTML的DotNetNuke皮肤
在DNN4.x时代制作皮肤时默认的Doctype是HTML,使用HTML Doctype时你会发现CSS的表现异常的不稳定,例如应该默认左对齐的地方会莫名其妙的居中,margin:auto; 居中的代码在不同浏览器的表现又有很大的差异,这些问题都可以随着定义使用XHTML Doctype挥之而去。
为什么要制作XHTML皮肤?
说到网页标准化(Web Standard)我想大家都应该很熟悉吧,那么制作符合网页标准化的XHTML皮肤有什么好处呢?
- 符合标准化日后移植更加方便
- 用户能够通过样式选择定制自己的表现界面
- 结构更清晰,网页读取速度更快
- 多浏览器兼容性更好
更多的优点我就不赘述了,这方面网上的资源很多。
如何制作支持XHTML的皮肤?
经过大家不断的反馈,DotNetNuke核心团队推出了一个折中的解决方案
如上图所示,如果你要创建一个皮肤名字是contact.html 那么你需要建立一个同名的contact.doctype.xml文件注意后缀是.doctype.xml 文件的内容是
<SkinDocType>
<![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">]]>
</SkinDocType>
这样DNN系统在读取这个皮肤的时候如果检测到和皮肤文件同名后缀是.doctype.xml的文件就会把这个皮肤解释为XHTML Doctype, 通过查看网页的源代码你可以看到,成功加载XHTML Doctype源代码的第一行应该是
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
如果没有成功加载则显示HTML Doctype
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
DNN 5.0对XHTML的支持
在这里我们快速展望一下即将推出DNN 5.0对XHTML的支持,在Host > Host Settings > Basic Settings > Host Details 多了一个 Fallback Doctype的选项
这其实就是选择如果皮肤本身不带Doctype系统默认的Doctype
- HTML4 (Legacy) -------------- 如果你的系统里有很多遗留的HTML皮肤建议选择这项以防显示出问题
- XHTML 1.0 transitional --------- 如果是新装的系统建议选择这项,默认的皮肤使用XHTML
- XHTML 1.0 strict -------------- 这项同样是XHTML但是语法的标准过于严格暂不推荐选择
我在写这篇blog的时候做了个测试, Fallback Doctype选择XHTML 1.0 transitional把没有定义doctype的皮肤的页面打开查看源代码果不其然 默认的Doctype已经是XHTML了, DotNetNuke又向网页标准化迈进了一步!
小贴士:
在DNN 5.0中虽然可以默认使用XHTML但在制做皮肤的时候还是建议加上XHTML Doctype。 方法参考前面建立后缀为.doctype.xml的同名文件。 这么做是以防有的DNN5.0网站默认设置是HTML4 (Legacy) 及默认Doctype是HTML ,在这种网站中如果皮肤有定义后缀为.doctype.xml的同名文件, DNN系统会忽略默认设置并把它解释为正确XHTML Doctype
我的DNN Blog www.dnnmix.com
DNN QQ群: 74812936
DNN MSN 群: group247485@msnzone.cn