一直以来,ZBLOG主题在制作上都保持着ZBLOG系统默认主题的大致框架,每类页面做一个主模板,里面用到的内容通过子模板来加载.每类主模板都是独立的,之间虽然有着很多相同的东西,比如头部信息,导航条,侧边栏,底部的版权,以及其内部使用的JS文件,等,都是相同或者相似的.而当前大部分主题都是每个模板都重复的保留了这些东西.实际上,这些HTML内容完全是可以重复使用的.
我之前也一直在想这个问题.当前主流系统是如何做的这,在这方便?一般来说,是以下这两类
<1>:像ZB主题这样,每类页面用一个HTML模板页.像DEDECMS也是这个的,以及其它一些CMS系统.当然,在实现上可能会有些差别.(简称为BLOG类)
<2>:另一类,就是将主题模板拆解成各个块,然后保存在数据库里,这类的代表有动网ASP系统,以及大部分论坛系统,也有大部分的CMS系统采用了这种方法.(简称为BBS类)
两种方法的优缺点主要是:
[1]:BLOG这类,在主题模板设计时比较容易,在DW上就能很直观的设计出正常的效果,边设计边预览.修修补补,一下子就能把这它的大概做出来. 而BBS这类,制作起来就比较麻烦点,我以前都是在线后台直接修改系统模板,在另一些CMS系统上,都有在线可视化的设计功能,但是,不管从哪方面,都没有BLOG类简单方便.
[2]:重用性上考虑,BLOG类,每类页面都要完全设计,这就可能造成这几类页面的不统一,模板之间的重用很少,每个模板页都要写上相同或者相似的东西.而BBS类,几乎是将所有的页面和功能都分别做一段模板代码保存在数据库里,到时,相同的部分直接调用对应的代码.重用度很高.但是管理起来确实是麻烦了点,特别是对于新手,几乎不知道要到哪去修改,修改哪部分,因为分成的模块太多了,页相应的说明却没有.不懂代码的,很难做,结果呢,只好用默认的了.
[3]:总体上来说,我更偏爱BLOG类,设计简单,快速,可视,不需要数据库,方便移植.但是,BBS类的重用性让我很想要.
综合以上分析,BLOG类的模板在制作上确实简单方便,但是却没让代码重用,导致后期的修改,要重复到每个模板里去做.如果ZBLOG的模板能吸收一点模板的模块化就爽了.
其实,大家不要被我误导了,其实ZB的模板也可以很方便的做到模块化的,1.7的也可以,不过没有1.8的方便,因为在1.8里,系统加入了主题自带include文件功能,只要将模板里可能重复使用的代码单独取出放到主题的include的一个文件里,再使用<#TEMPLATE_INCLUDE_大写文件名#>,当然也可以放到系统的include文件夹里,再使用<#CACHE_INCLUDE_大写文件名#>也可以,不过放在系统的include里不太好,因为那是公用的地方,如果你换了主题,或者将这个主题发布出去,就没法用了.
上面说得比较简单,下面详细点说一下如何做.
1>:先做好一个模板,比如default.html,然后,将这个模板里的代码整理一下,将那些重复使用的代码保存到主题的include里,比如,一般来说,这个模板从开头,一直到内容区这一段代码(主要是包括网页的基本信息,如编码,样式,JS,标题,导航条等),其次侧边栏,有些人的侧边栏喜欢完全相同,所有页面都是使用同样的侧边栏目,这样也可以共用,也保存出来,再接下来,应该就是底部的,几乎所有博客的网站底部都是相同的,也就完全可以重用了.那就把从内容区结束的位置开始,到网页结束的代码保存出来.好了,这下就可以重复用了.请看图片:

经过这样一拆分后,那我们的模板页代码大大减少了,而且修改起来也方便了,如果要在底部都加一个东西,如一个列表,只要修改include里的bottom.asp就行了,所有页面都同时变化.而模块化后,模板页的代码则变成了很少的一段,比如下面就是一个模板页代码:
<#TEMPLATE_INCLUDE_TOP#>
<div>内容区代码</div>
<#TEMPLATE_INCLUDE_BAR#>
<#TEMPLATE_INCLUDE_BOTTOM#>
看看,是不是很让人惊讶?当然,你要注意了,在你设计之初,先不要想这样,只是在设计好了以后,再用这样的方法来将模板分解,以方便其它模板使用.
以上的方法我已经测试过了,使用后的效果和之前完全一样.
另一种设计想法. 源自JAVA里的函数重载,以及ASP.NET里的页面部分重载
我记得以前看过ASP.NET,其就有一个功能,页面重载,就是当多个页面的大部分内容相同时,使用这种方法,只要将不同的部分重新加载就行了(自动过程,不用写代码来加载,只要写出那部分代码就行),这样在界面设计上就很方便了,做一个通用界面,其它界面只设计加载不同部分就行了.
所以我在想,是不是ASP里,也来做一个相似的功能呢?
再想想,似乎现在好像已经有这样的功能在插件中应用了.比如我的[[发布]ZBLOG-[BFXML友情链接插件]内测版]插件,以及小P昨天发的小P插件,都是使用了系统的模板,然后再将里面的内容替换掉.流程上似乎是这样的.不过,这样还是存在着很多的不足,因为不同的主题,总会有一些不寻常的地方,现在做的,很难兼容所有主题,就比如前几天就有人在[[发布]ZBLOG-[BFXML友情链接插件]内测版]插件的ZB论坛发布贴里说友情链接插件在替换[TagCloud]时把导航条里的TagCloud也替换成了[网站收藏],所以,现在这种作法还很不成熟,但是,我认为这个方法如何能得到官方的大力支持,在程序上加以配合,以及主题在制作时考虑多一些,那这种方法将会使得主题模板在制做和维护过程中更加方便。
收藏和分享: