使用PHP代码<php>
第一种是使用php标签:
<php>echo 'Hello,world!';</php>
第二种就是直接使用原始的php代码:
<?php echo 'Hello,world!'; ?>
但是php标签或者php代码里面就不能再使用标签(包括普通标签和XML标签)了.
防止模版解析<literal>
<literal>
<if condition="$name eq 1 "> value1
<elseif condition="$name eq 2" />value2
<else /> value3
</if>
</literal>
模版注释
{// 这是模板注释内容 }
{/* 这是模板
注释内容*/ }
变量调用函数
使用例子:{$webTitle|md5|strtoupper|substr=0,3}
编译后的PHP代码就是:<?php echo (substr(strtoupper(md5($webTitle)),0,3)); ?>
使用例子:{$create_time|date="y-m-d",###}
编译后的PHP是:<?php echo (date("y-m-d",$create_time)); ?>
变量默认值{$user.nickname|default="这家伙很懒,什么也没留下"}
系统变量及特殊变量
系统变量:包括server、session、post、get、request、cookie
{$Think.server.script_name } // 输出$_SERVER变量
{$Think.session.session_id|md5 } // 输出$_SESSION变量
{$Think.get.pageNumber } // 输出$_GET变量
{$Think.cookie.name } // 输出$_COOKIE变量
{$Think.version } //版本
{$Think.now } //现在时间
{$Think.template|basename } //模板页面
{$Think.LDELIM } //模板标签起始符号
{$Think.RDELIM } //模板标签结束符号
系统变量及特殊变量(简洁方式)
{@var} //输出Session变量 和 {$Think.session.var} 等效
{#var} //输出Cookie变量 和 {$Think.cookie.var} 等效
{&var} //输出配置参数 和 {$Think.config.var} 等效
{%var} //输出语言变量 和 {$Think.lang.var} 等效
{.var} //输出GET变量 和 {$Think.get.var} 等效
{^var} //输出POST变量 和{$Think.post.var} 等效
{*var} //输出常量和 {$Think.const.var} 等效
如果需要输出二维数组,例如 要输出$_SESSION[‘var1’][‘var2’]的值 快捷输出可以使用:{@var1.var2} 的方式
模版包含文件
使用完整文件名包含格式:<include file="完整模板文件名" />
例如:<include file="./Tpl/default/Public/header.html" />
包含当前模块的其他操作模板文件格式:<include file="操作名" />
例如 导入当前模块下面的read操作模版:<include file="read" />
包含其他模块的操作模板格式:<include file="模块名:操作名" />
例如,包含Public模块的header操作模版:<include file="Public:header" />
包含其他模板主题的模块操作模板格式:<include file="主题名@模块名:操作名" />
例如,包含blue主题的User模块的read操作模版:<include file="blue@User:read" />
用变量控制要导入的模版格式:<include file="$变量名" />
例如 <include file="$tplName" />
循环输出二维数组标签
Volist标签的name属性表示模板赋值的变量名称,因此不可随意在模板文件中改变。id表示当前的循环变量,可以随意指定,但确保不要和name属性冲突,例如:
<volist name="list" id="vo">
{$vo.id}{$vo.name}
</volist>
支持输出部分数据,例如输出其中的第5~15条记录
<volist name="list" id="vo" offset="5" length='10'>
{$vo.name}
</volist>
输出偶数记录
<volist name="list" id="vo" mod="2" >
<eq name="mod" value="1">{$vo.name}</eq>
</volist>
输出循环变量
<volist name="list" id="vo" key="k" >
{$k}.{$vo.name}
</volist>
如果没有指定key属性的话,默认使用循环变量i,例如:
<volist name="list" id="vo" >
{$i}.{$vo.name}
</volist>
Foreach标签
<foreach name="list" item="vo" >
{$vo.id}{$vo.name}
</foreach>
Switch标签
<switch name="变量" >
<case value="值1">输出内容1</case>
<case value="gif|png|jpg">图像格式</case> //多个条件判断
<default />默认情况
</switch>
判断比较标签
eq或者 equal:等于 neq 或者notequal:不等于
gt:大于 egt:大于等于
lt:小于 elt:小于等于
heq:恒等于 nheq:不恒等于
例如:<eq name="name" value="value">相等<else/>不相等</eq>
所有的比较标签可以统一使用compare标签(其实所有的比较标签都是compare标签的别名)
例如:<compare name="name" value="5" type="eq">value</compare>
Range标签
Range标签用于判断某个变量是否在某个范围之内,包括in、notin和range三个标签,value可以用变量.
可以使用in标签来判断模板变量是否在某个范围内
例如:<in name="id" value="1,2,3" >输出内容1</in>
如果判断不再某个范围内,可以使用:
<notin name="id" value="1,2,3" >输出内容2</notin>
可以把上面两个标签合并成为:
<in name="id" value="1,2,3" >输出内容1<else/>输出内容2</in>
也可以直接使用range标签,替换in和notin的用法:
<range name="id" value="1,2,3" type="in" >输出内容1</range>
Present标签
可以使用present标签来判断模板变量是否已经赋值,例如:
<present name="name">name已经赋值</present>
如果判断没有赋值,可以使用:
<notpresent name="name">name还没有赋值</notpresent>
可以把上面两个标签合并成为:
<present name="name">name已经赋值<else /> name还没有赋值</present
Empty标签
可以使用empty标签判断模板变量是否为空,
例如:<empty name="name">name为空值</empty>
如果判断没有赋值,可以使用:
<notempty name="name">name不为空</notempty>
可以把上面两个标签合并成为:
<empty name="name">name为空<else /> name不为空</empty>
Defined标签
可以使用defined标签判断常量是否已经有定义,例如:
<defined name="NAME">NAME常量已经定义</defined>
如果判断没有被定义,可以使用:
<notdefined name="NAME">NAME常量未定义</notdefined>
可以把上面两个标签合并成为:
<defined name="NAME">NAME常量已经定义<else /> NAME常量未定义</defined>
IF标签
如果觉得上面的标签都无法满足条件判断要求的话,我们还可以使用if标签来定义复杂的条件判断,例如:
<if condition="($name eq 1) OR ($name gt 100) "> value1
<elseif condition="$name eq 2" />value2
<else /> value3
</if>