转自:http://bbs.phpchina.com/redirect.php?tid=179467&goto=lastpost&sid=77eho6
本人第一次在phpchina发表原创帖,如果写的不好,欢迎大家拍砖,下面进入正题!
一.模板语法在模板里面,是可以直接显示php的变量的,也可以使用if,else,循环等,模板解析函数会将这些变量替换成实际的变量值。
1.设置变量的值
<!-–{eval $_TPL['titles'] = array(’日志’, ‘随便看看’);}–->
表示将$_TPL['titles']变量设置为array(’日志’, ‘随便看看’);
2.变量的显示
直接写变量的名字 $_GET[aa]
3.调用另外一个模板文件进来[模板里面再调用模板]
<!–-{template header}-–>实际上相当于php中的
相当于template(”header”) 即解析/template/default/header.htm文件
4.条件判断 <!–-{if xxx}-–>,<!–-{else}-–>,<!–-{/if}–->类
相当于php的if,else,但一定要<!–{/if}–>结束一个if语句
5.循环 <!–-{loop}–><!–-{/loop}-–>类
<!–-{loop $list $key $value}-–>
<!--{/loop}-->
相当于php的foreach($list $key=>$value)
6.在模板写php代码
<!--{eval php代码;}-->
7.时间处理
<!--{date('Y-m-d h:i',$time)}-->
8.头像处理
<!--{avatar($uid, $size='small', $returnsrc = FALSE)}--> returnsrc为true时返回头像的URL
当然了,以上模板语法可以嵌套,所以这也造成我们看模板文件的复杂性,比如在loop里面会有if,即表示每循环一次都要进行判断;又或者if里面有 loop,即表示只有满足条件了,才会进行循环!
二.模板解析过程
1.在php文件中引入模板
如果我们要在一个php文件中载入一个模板直接使用:
include_once template("模板的名字");
如:我们要在index.php文件中引入首页的模板:
include_once template("index");
2.模板的载入
上面步骤后php将调用template()函数
函数的原型为
01 |
function template($name) {
|
02 |
global $_SCONFIG, $_SGLOBAL;
|
03 |
if($_SGLOBAL['mobile']) {
|
04 |
$objfile = S_ROOT.'./api/mobile/tpl_'.$name.'.php';
|
05 |
if (!file_exists($objfile)) {
|
06 |
showmessage('m_function_is_disable_on_wap');
|
07 |
}
|
08 |
} else {
|
09 |
if(strexists($name,'/')) {
|
10 |
$tpl = $name;
|
11 |
} else {
|
12 |
$tpl = "template/$_SCONFIG[template]/$name";
|
13 |
}
|
14 |
$objfile = S_ROOT.'./data/tpl_cache/'.str_replace('/','_',$tpl).'.php';
|
15 |
if(!file_exists($objfile)) {
|
16 |
include_once(S_ROOT.'./source/function_template.php');
|
17 |
parse_template($tpl);
|
18 |
}
|
19 |
} |
20 |
return $objfile;
|
21 |
} |