织梦静态模板引擎解析模板ParseTemplet()
这个模板解析函数跟dede动态模板引擎里面的模板编译函数几乎一样,只有里面很小的区别,它的作用也是从模板中查找标签,以及标签属性和属性值,然后,把这些放入到标记集合数组里面。要说有区别也是有的但是这个跟没有区别一样,例如:在静态模板类中的定义的开始符号是:"{",而在动态模板引擎定义的是"{dede:" 仅此而已,所以,在这个函数里写代码的时候,多写了一个变量,但是最终还是"{dede:" 中间步骤不一样,但是,结果一样。
所以,对于这个函数我们完全不用去再分析了,如果想具体了解一下这个函数的代码,那么,请到dede动态模板引擎函数ParseTemplet()教程里面去查看。
这样说可能不好理解,因为它们二个函数执行后的结果就是生成了标记集合,所以,只要把这二个函数的调用的后的结果对比一下就知道这二个函数几乎完全一样的结果,如下所示:
动态模板引擎模板解析函数解析后的标记集合:
Tag Object ( [isCompiler] => [tagName] => if [innerText] => <input type='button' class="coolbg np" onClick="location='content_list.php?cid={dede:global.cid/}&mid=0';" value='全部文档' /> <?php } else{ ?> <input type='button' class="coolbg np" onClick="location='content_list.php?cid={dede:global.cid/}&mid=<?php echo $cuserLogin->getUserID(); ?>';" value='我的文档' /> [startPos] => 1257 [endPos] => 1600 [cAtt] => TagAttribute Object ( [count] => 2 [items] => Array ( [tagname] => if [condition] => $adminid==$mid ) ) [tagValue] => [tagID] => 2 )
静态模板引擎模板解析函数解析后的标记集合:
DedeTag Object ( [IsReplace] => [TagName] => lh [InnerText] => [StartPos] => 755 [EndPos] => 870 [CAttribute] => DedeAttribute Object ( [Count] => 7 [Items] => Array ( [tagname] => lh [itemname] => 楼号 [autofield] => 1 [type] => text [isnull] => true [default] => [maxlength] => 250 => ) ) [TagValue] => [TagID] => 6 )
通过对比发现,它们的结构完全一样,不同之处是,因为是二个不同的织梦模板引擎,所以,动态模板引擎用的是不是要编译isCompiler来判断模板要编译吗?而静态模板引擎则用的是IsReplace来判断是不是要解析;再一个是动态模板引擎的属性对像是cAtt,而静态的则是CAttribute,其它的就是一些属性及其值不一样,也就是Items数组里面的键值,这里面的键和值,就是标签里面的属性和属性值,这是肯定的,即使是同一样引擎下面的标签,属性也是不一样的,何况是二个不同的模板引擎呢。
只要把这二个模板引擎类的模板解析函数分析到这种程度就可以了。只要知道解析出来的标记集合都是什么,这为我们以后,进行织梦二次开发,特别是去写标签的时候,提供了很大的帮助,特别是静态模板引擎在数据显示这个引擎应用广泛。