电话
13363039260
一般的标签会涉及到底层模板,例如:arclist
、channel
等,我们来扩展下我们上面标签的功能:
{dede:test name='dedecms'/} 我的名字叫:[field:name/]{dede:test}
这里 我的名字叫:[field:name/]
则为我们要处理的底层模板,[field:name/]
为我们标签属性中的 name
。
这里我们需要了解 lib_test(&$ctag,&$refObj)
函数中 $ctag
参数,这个参数就是我们解析式模板引擎获取的当前标签内容,其中这个对象下有一个 GetInnerText()
方法能够获取当前标签的底层模板。
<?phpif(!defined('DEDEINC')) exit("Request Error!");function lib_test(&$ctag,&$refObj){ global $dsql,$envs; //属性处理 $attlist="name|"; FillAttsDefault($ctag->CAttribute->Items,$attlist); extract($ctag->CAttribute->Items, EXTR_SKIP); // 获取底层模板 $innertext= $ctag->GetInnerText(); // 对标签进行解析 $revalue = str_replace("[field:name/]", $name, $innertext); return $revalue;}?>
这样我们就完成了一个简单的对底层模板解析的处理。
标签其他一些开发技巧可参考 /include/taglib
其他标签文件。