
本来刚才还在考虑,今天如何切入主题的,正好看到一未注册用户Eve的留言,其中提到mtime,提到myspace.cn,尤其是提到blog页面布局的不足,于是临时确定就从.subtext的页面加载说起。
.subtext对于页面重定向,同样是在httpHandlers中进行处理的(请注意web.config中的相关配置节),httpHandlers节中定义对各种类型的文件或某个目录,或某一具体路径访问的处理HandlerFactory(关于IHttpHandlerFactory的运行机制,请各位查阅MSDN,我这里不做详细讲述),需要特别注意的是,对于所有不需要特殊处理和重定向处理的页面或目录,或者需要特殊处理和不需要重定向的页面和目录,需要在这里添加配置,特别需要注意的是这一句:
<add verb="*" path="*" type="Subtext.Framework.UrlManager.UrlReWriteHandlerFactory, Subtext.Framework"/>
这一句需要放置在httpHandlers配置节点的最后(呵呵呵,大家应该能够理解为什么需要这样处理)。
到此处,重定向处理已经进入预定的轨道了,后面还涉及到实质性的Code,但是如果各位梳理到了这个地方,后面的详细处理应该可以弄明白,暂时先点到此处,意犹未尽最是喜人:):。
再回到Eve朋友的留言,提到如果Blog的各个功能页面能够有不同的布局就好了,现在请大家再看web.config的HandlerConfiguration节点下的HttpHandlers配置节,比如:
<HttpHandler pattern="(?:/archive/\d{4}/\d{2}/\d{2}/\d+\.aspx)$" controls="viewpost.ascx,Comments.ascx,PostComment.ascx"/>
此节点,对应的就是重定向时对blog文章阅读页面的url构成规则,和阅读页需要加载的控件(控件如何加载到页面中,后文会有专文讲述),那么既然这里可以定义加载的控件列表,那么我们就可以定义一个页面专门用来布局(theme.ascx),然后再在此页面加载实际的功能模块控件,不就实现了最终显示的效果差异化了么?
呵呵呵,思路如此,各有不同,不明之处,请留言共同讨论。
注:明天会实现一个具体的实例,放置在http://subtext.8001861.com站点供大家体验。欢迎群友访问。
另:项目包待实现此文提到的页面布局个性定义后一并提供下载,预计周六下午(明天迎接奥运,放假半天:):)。