一、自定義變量
如何實現一個商城系統,在商品列表頁面默認每行顯示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>