Discuz!NT 2.5 正式版 下载
beta、RC版升级补丁
Comsenz 招聘信息
首届Discuz!NT 模板大赛圆满结束
著名音乐网站SoGua网、分贝网
采用Discuz!NT搭建社区
FIFA Online2官网论坛使用Discuz!NT
游戏城寨论坛使用Discuz!NT搭建
第二届优秀版主评选揭晓
Discuz!NT 2.5正式开源 Discuz!NT文档中心
用户整合说明文档
Discuz!NT亮相微软Tech-Ed 2007
Discuz!NT情景搞笑短片抢先看
1/1页1 跳转到查看:1429
发新话题 回复该主题

[经验] Discuz!NT学习笔记(3) 模板-1

Discuz!NT学习笔记(3) 模板-1

Discuz BBS的模板由Discuz.Forum.ForumPageTemplate类负责生成,ForumPageTemplate从Discuz.Common.PageTemplate继承。
PageTemplate是一个抽象类,由一个虚方法、一个抽象方法与一个私有方法组成。
虚方法——作用:继承类可选择是否重写本方法实现,在这里PageTemplate为所有继承者提供默认的“获得模板字符串”方法
继承者如果有特殊需要可以自己override来实现自己的GetTemplate方法。
public virtual string GetTemplate(string forumpath,string skinName, string templateName, int nest,int templateid)
{/**/}
私有方法——作用:继承类不能修改本方法的实现,在这里的作用是“转换标签”,Discuz为了防止继承者去修改标签含义,所以把
本方法设置为私有,如果用户需要定制自己的标记,可以在ReplaceSpecialTemplate中实现。
private string ConvertTags(int nest,string forumpath, string skinName, string inputStr, int templateid)
{/**/}
抽象方法——作用:继承类一定要实现本方法,ForumPageTemplate继承PageTemplate时实现了本方法,
论坛模板在PageTemplcate的基础上增加了“{forumversion}、{forumproductname}”这2个标签
public abstract string ReplaceSpecialTemplate(string forumpath,string skinName,string strTemplate);

在研究这个模板功能时发现2个设计上的问题
1.PageTemplate中的public static Regex[] r = new Regex[21];,Discuz目的是用来替换标记,一共21组标记,
这里可以使用生成器模式来封装起来,但需要处理<%template%>标记就Build一个这样的处理器出来,优势在于——
提高代码质量(可阅读性)、扩展标记起来也方便,以后有新标记直接写好那个处理器,在congif里设置就可以Build
一个处理器出来,不用去写集成类了。
2.ForumPageTemplate有多余的方法。
  public override string GetTemplate(string forumpath,string skinName, string templateName, int nest,int templateid)
  {
  return base.GetTemplate(forumpath,skinName,templateName,nest,templateid);
  }
这里override了虚方法,但在重实现时又调回base方法,不是很多余吗?
今天先写这么多,明天还要上班。。苦呀。。。。。
希望大家看了后回复一下,让我知道今后的研究方向啊。。

TOP

 

回复:Discuz!NT学习笔记(3) 模板-1

郁闷,MSN发不了日志,先在这里发表,迟些贴回blog

TOP

 

回复:Discuz!NT学习笔记(3) 模板-1

支持楼主写下去

TOP

 

回复:Discuz!NT学习笔记(3) 模板-1

写的不错,对于楼主写的这些类似开发日志的东西,Discuz!NT应该给与高度的重视,有则改之,无则加勉,在下一版本中更加完善。

这才是开源者和广大群众的福音,我翘首以盼。

TOP

 

回复 4F hjwq2002 的帖子

今天开始放年假,11天假期,应该可以好好研究了。。

TOP

 

回复:Discuz!NT学习笔记(3) 模板-1

加油...后生可畏啊...
DistantBox插件系列作者申明:http://nt.discuz.net/showtopic-31019.html
有问题和对插件区建议,请发送MAIL到Again_start@sohu.com

TOP

 
1/1页1 跳转到
发表新主题 回复该主题