目前nblog使用的开发框架nsb3里的模板引擎是使用外联式的解释。即,一个循环标签是这样的:
<tag : loop ChannelID="0" ListType="List" RecType="New" PageSize="10" TitleLen="20" RecColumn="1" Template="test_tr.tpl" / >
循环项目的模板是通过属性template指向并载入的,该模板是单独存为一个模板文件,命名大多类似于***_Tr.htm或者***_Td.htm。这样有两个不好的地方,一个是导致模板不够直观,另一个是模板文件太多导致空间占用。
这次的新的模板引擎支持了非自闭合的标签的解释,即不只是支持<tag:*** />这样的标签,同时也支持<tag:***>***</tag:***>这样的标签。并且支持循环嵌套。给一个示例:

上图里的第一个循环里还嵌套了一个循环:

循环支持单列的循环,也支持一行多列的循环,但是此时需要指定行开始标签和结束标签以及列标签。当然在单列循环的时候也可以指定这些标签,不过如果不写默认会把循环标签中的内容全部指定为列标签。这个从第二个图里可以看出。
呵呵,有想法、建议的朋友可以交流交流。
在 线 人
我对模板实现逻辑功能很是头大,所以没有在Z-Blog中搞这种方法.
Unknown browser不过我觉得你可以参数一下XSLT的语法和标签.
<#ddddd />总觉得看上去别扭.
兄好,啊呜~~
Unknown browser这样的模板逻辑偶想实现很久啦,这次终于下定决心搞了出来。这样比较直观有序歪。
<#ddddd />这样的偶也觉得很不爽,本来想<#dddd>这样的,但是担心如果有时候解释引擎或者模板设计人员难免有所疏漏,那样会导致页面无法通过w3c的验证,所以就搞了个这样的。
如果做成xsl那样的全面的语法逻辑太耗时也没必要了,毕竟只是一个自定义模板引擎,米那么强悍的歪。
偶再搞搞,或者干脆用原来的{$xxx}得了~~
要养成新一代习惯,标签闭合,尽少表格套用。偶们要朝W3C标准靠近。
Unknown browser现在这个样式就是标准的歪~~~
Unknown browser今天解决了这个新模板引擎的一些bug,完美的支持多个循环了。以后要做的就是,能高效的利用数据库连接动态缓存相同查询的记录集。
Unknown browser目前这个模板引擎的动态路径加载已经基本实现,不必像以前有N多的冗余模板了~~~
不妨看看 tsys2的模板标签解释吧。
Unknown browsertsys2的不少思想果然不错!!!
Unknown browser它的标签实现思想和偶的不一样歪,机制也不一样,但是确实有不少可取之处~不错不错!
这种思想的模板引擎我倒是早实现了
Unknown browser另外请教一下你的模板里"<tag:rowstart><tag:rowend><tag:col><tag:empty>"分别代表什么意思呢?分别应用在什么需求之下呢?
还有我现在就一直在研究模板里增加If..Else..End If的逻辑运算功能~可是没什么突破..是否可以交流一下~
刚刚看了一下Blog的模板解析函数 发现就是小荷发布的"内容管理系统参数传递"教程里的几个现成函数!
Unknown browser而"code by nowa. 2004-4"则典型地说明了中国一些"程序员"借鉴他人经验的方式与习惯!
虽然问题好像不大 但一滴水就足以反映太阳的光辉了!
我04年初参考小荷的文章写了这个解析函数和LoopClass类在blueidea公布过的,小荷当时只是提供了一个思想还有函数模型,是根本无法运行的,我按照自己的办法实现了,所以我这样写。这样的解释满意吗?
Unknown browserPS1:我并不能代表中国的"程序员",您是看高我了~~~
PS2:对于实现模板标签逻辑,有两种方法,一种还是用正则,但是嵌套比较难解决,还有一种就是逐行扫描并且分析出框架。我都实现了。
先那个帖子我说话是偏激了点,见谅,主要是以前我看见人家用了我的一段尐程序,写了他自己的版权,十分生气,所以才偏激了些!
Unknown browser另外,对于模板标签的逻辑实现,原先我也是想用逐行扫描这样的,因为那时候NB文章系统好像就是这样的!可是我发觉,模板大一点的话,生成实在是太慢了!所以只能花几天,写个正则的出来了!现在差不多齐全了,就是还想实现一下"IF...Else...End If"这样的逻辑判断,不过似乎比较困难了,而且最近看来,就算做出来了,要距离实用,也还有许多难题,所以暂时放弃做了个多级嵌套循环。对了,你的系统什么时候套上你这个模板引擎?蛮想看看的!