一、自定义变量
如何实现一个商城系统,在商品列表页面默认每行显示4件商品信息,管理员希望通过后台可以控制每行显示的商品数量,那么需要使用自定义变量。不是通过后台PHP注册,但是可以当作注册变量的来用。
语法:
定义 <{assign var=”变量名” value=”值”}>
取值只有 {$变量名}
重新放赋值,需要注册一个同名的变量<{assign var=”变量名” value=”值”}>
smarty注释
<{* 注释 *}>
数值类型的值进行数学运算重新赋值时不得加上单/双引号
<{assign var="t2" value="1"}>
原来的值:<{$t2}>
<br />
加1的结果:
<{*注释:数值类型的值进行数学运算不能加单/双引号*}>
<{assign var="t2" value=$t2+1}>
<{$t2}>
二、运算符
支持所有的PHP运算符!!另外
eq 判断是否相等 ==
neq、ne 不相等 !=
lt 小于 <
lte 小于等于 <=
gt 大于 >
gte 大于等于 >=
is div by 被某数整除 %
is even 为偶数 %2==0
is odd 为奇数 %2!=0
三、流程控制
1、顺序结构
2、选择结构
语法:
<{if 条件表达式}>
XXX
<{elseif 条件表达式}>
xxxxx
<{else}>
XXXX
<{/if}>
3、循环结构
1)section
2)Foreach
四、案例:管理员在后台控制每行商品显示数量
后台页面:
<?php
//引入核心类库文件
include_once('libs/Smarty.class.php');
$smarty=new Smarty();
//定义配置
//用户访问的是后台页面,所以所有的路径都应该要以后台页面为参照物!!
$smarty->setTemplateDir('templates');//定义模板路径
$smarty->setCompileDir('template_c');//定义编译路径
$smarty->setConfigDir('config');//定义配置路径
$smarty->setCacheDir('cache');//定义缓存路径
$smarty->setLeftDelimiter('<{');//指定左定界符,避免和JS冲突
$smarty->setRightDelimiter('}>');
$temp=2;
$smarty->assign("temp",$temp);
//注册一个索引数组
$arr=array('a','b','c','d','e','f');
$smarty->assign('arr',$arr);
//开启调试 : $smarty->debugging=true;
//自动整合前后台页面
$smarty->display('index2.tpl');
?>
前台页面:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>
<body>
<{assign var='t1' value='a'}> <{*赋值*}>
<{$t1}><{*取值*}>
<{assign var='t2' value='1'}><{*赋值*}>
<br>原来的值:<{$t2}><{*取值*}>
<{assign var='t2' value=$t2+1}><{*赋值,注意数值类型的值进行数学运算不能加单/双引号*}>
<br>加1后的值:<{$t2}><{*取值*}>
<br>
使用选择结构:
<{if $temp gt 0}><{*大于*}>
$temp>0
<{elseif $temp eq 0 }><{*等于*}>
$temp=0
<{elseif $temp lt 0 }><{*小于*}>
$temp<0
<{/if}>
<br>
<{assign var='pic' value=0}>
<{foreach from=$arr item=v }>
<{$v}>
<{assign var='pic' value=$pic+1}>
<{if $pic%3 eq 0}>
<br/>
<{/if}>
<{foreachelse}>
<font color="red" style="font-weight:bold;">数组为空</font>
<{*smarty注释,数组为空时可以显示对应内容*}>
<{/foreach}>
</body>
</html>