weixin

织梦dedetemplate.class.php 模板解释器 Dedetemplate::ParseTemplate 函数分析

日期: March 22, 2019 作者:网站维护

和前一篇的dedetags.class.php 里的 DedeTagParse::parseTemplete 类似。这是织梦的另外一个模板解释器,更晚出现。虽然作用类似,不同的是,这个模板解释器是将模板解释称php的代码。而之前的是解释成html代码。

测试一下

根目录下新建dyntest.php、testdynTemplets.html

dyntest.php 内容:

<?php
// 需要载入一个配置文件,这个里面定义了一些dedetemplate需要用到的函数和常量
require_once ('include/common.inc.php');
require_once ('include/dedetemplate.class.php');

$a = new DedeTemplate(dirname(__FILE__));
// 关闭缓存选项方便测试,默认的缓存是打开的,只有模板文件有更改才会再次解释模板。
$a->isCache = false;
$a->LoadTemplate('testdynTemplets.html');

$arr = array(
    "foo"=>"bar",
    "foot"=>"ball",
);
$a->SetArray('hello',$arr);
$a->display();

testdynTemplets.html 内容:

{dede:array name="hello"}
  {dede:key/} = {dede:value/}<br/>
{/dede:array}

解释后的文件可以通过输出 DedeTemplate::cacheFile 找到缓存文件路径。

编译过程是用 parseTemplate() 找到块标签(类似<dede></dede>前后闭合的)或者短标记(类似<dede/>自闭合的标签)解释出标签内容,然后 CompilerAll() 把标签替换为php代码,因为块标记里面可能还有标签没有替换,就继续用 parseTemplate() 解释替换后的内容,如此循环,直到找不到标签了。

Screenshot_2019-03-22 Screenshot.png

广告内容为平台自动生成