smarty 模板的入門使用

  
  
  
  
<?phprequire_once 'inc/libs/Smarty.class.php'; $s=new Smarty();// echo $s::SMARTY_VERSION;// echo smarty::SMARTY_VERSION;//輸出版本號$s->debugging=false;$s->setTemplateDir('html');$s->assign('title','個人網頁');$s->assign('address',['鄭州','北京','上海']);class st{ public $name="jack"; public $age=20; public $address="鄭州";}$st=new st();$s->assign('st',$st); $s->display('index.html');
   
   
   
   
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>網站首頁</title></head><body><h1>顯示學生姓名:{$st->name}</h1><h1>{$title}</h1><hr>{*模板的註釋語句 *}{foreach $address as $k=>$v}{$v}<br>{foreachelse} 沒有數據循環{/foreach}</body></html>

設定時區
date_default_timezone_set('prc');
分配數據變量
$s->assign('age',100);  
index.html讀取
<h1>{$age}</h1>  
模板註釋語句
{*模板註釋*}
修飾變量
  
$s->assign('address',['鄭州','北京','上海']);  
<h1>{$address[0]}</h1>  只顯示一條信息
數組的循環輸出
{foreach $address as $k=>$v}
{$v}<br>
{foreachelse}
    沒有數據循環
{/foreach} 
 輸出下標
{foreach $address as $k=>$v}
{$k}<br>
{foreachelse}  
    沒有數據循環
{/foreach}  
{foreach $num as $k=>$v}
{$v}----{$k}---{$v@index}---{$v@first}
---{$v@last}---{$v@total}---{$v@iteration}<br>
{foreachelse}
沒有循環數據輸出
{/foreach} 

{cycle values='green,red,yellow'} 顯示隔行的顏色
   
   
   
   
{foreach $num as $k=>$v}<span style="color:{cycle values='green,red,yellow'}">{$v}----{$k}---{$v@index}---{$v@first}---{$v@last}---{$v@total}---{$v@iteration}<br></span>{foreachelse}沒有循環數據輸出{/foreach }

 

引入時必定注意此文件的編碼要修改成utf-8;
編寫一個類在php文件中
   
   
   
   
class st{ //建立類並讀出來 public $name="jack"; public $age=20; public $address="鄭州";}$st=new st();$s->assign('st',$st);
html文件中調用
   
   
   
   
<h1>顯示學生姓名:{$st->name}家庭住址:{$st->address}學生年齡{$st->age}歲</h1>
smarty鏈接mysql讀取數據庫的信息
   
   
   
   
//pdo 查詢顯示數據include 'Db.class.php';$db = new Db();$s->assign('stu',$db->query('pro','title,img'));
html顯示數據 {$v@iteration}顯示前面的數字
   
   
   
   
{foreach $stu as $v} {$v@iteration}、{$v['title']}<br> {foreachelse} 沒有數據讀出{/foreach}
{counter}記數器
    
    
    
    
{counter}、kljfdsj<br>{counter}、dsfksldjf<br>{counter}、dskf<br>{counter}、kljfdsj<br>

    
    
    
    
{counter name=aa skip=1 start=10}、鄭州<br>{counter name=aa}、北京<br>{counter name=aa}、上海<br>{counter name=aa}、天津<br>


也能夠讀出多個字段
   
   
   
   
{foreach $stu as $v} {$v@iteration}、{$v['title']}===={$v['img']}<br> {foreachelse} 沒有數據讀出{/foreach}
模板中定義變量並輸出直接在html頁面直接編寫並輸出
   
   
   
   
{*模板文件中定義變量*}{$age=20}{$add='鄭州'}{$love=['音樂',20]}{$age}----{$add}----{$love[0]}//輸出
時間格式的函數
   
   
   
   
{*直接調用函數*}{date('Y-m-d H:i:s')}<br>{time()|date_format:'Y-m-d H:i:s'}
{$smarty.server.SERVER_NAME}  獲取域名
{$smarty.server.REMOTE_ADDR}  獲取客戶ip
default 若是接不到值會有默認值|爲變量的修飾器或調節符
   
   
   
   
{$smarty.get.id|default:1}{$smarty.post.id|default:1}{$smarty.request.id|default:1}{$smarty.session.user|default:'jack'}
{literal}   {/literal}     {*忽略不適用模板解析*}  忽略若是不加就會報錯不然格式要修改成以下的格式
   
   
   
   
<script> function aa(){ alert('ok'); } aa();</script>
   
   
   
   
<script> function aa(){alert('ok');} aa();</script>
或者爲加上 {literal}  任何格式均可以出現結果
   
   
   
   
{literal}<script> function aa(){alert('ok');//不換行不能輸出 } aa();</script>{/literal}
truncate:數字:要省略顯示的符號   表示截取多少個字串 字符串截取
   
   
   
   
$s->assign('title','aaa的水立方接收到了解放了聖誕節福利聖誕節瘋狂兩三點');
    
    
    
    
<h1>{$title|truncate:11:'###'}</h1>

    
    
    
    
<h1>{$name='打了飛機凍死了房間裏撒你們分開了聖誕節分類考試大姐夫'}</h1><h1>{$name|truncate:10}</h1>

加密函數的使用
   
   
   
   
{$i='ok'}{$i|md5}


upper轉換爲大寫  ,lower所有轉換爲小寫

   
   
   
   
$s->assign('title','aaa的水立方接收到了解放了聖誕節福利聖誕節瘋狂兩三點');
   
   
   
   
<h1>{$title|default:'未分配'|upper|truncate:11}</h1>
smarty 框架的內置函數max最多循環幾回,step爲步長
for語句
   
   
   
   
{for $i=1 to 10} {$i}{/for}
while語句
   
   
   
   
{$n=1}{while $n<10} {$n++}{/while}
當須要導入一個文件時在zend裏面沒有指定字符集會默認爲gbk因此要修改字符集爲uft-8

在同級的html文件中編寫
    
    
    
    
include 'footer.html';
if判斷函數
   
   
   
   
{if 1==1 }ff{/if}{$n=1}
if else
   
   
   
   
{if 1==2}{else}yyyy{/if}
if else if
    
    
    
    
{if 1==2} 2{else if 1==3} 3{else if 1==4} 4{else}5{/if}
capture 裏面能夠一段一段的寫而後調用
   
   
   
   
{capture assign="info"}dsflsd<br>dafd<br>{time()}{for $y}{/capture} {$info}
{*fetch 抓取其餘網頁拿過來抓取的只是一個效果*}
{fetch file="http://www.baidu.com"}  
{cycle values='red green yellow'}隔行換色
   
   
   
   
{for $i=1 to 50} <div style="background-color:{cycle values='green,yellow,red,blue'};margin:20px auto; width:600px;">{$i}</div>{/for}

php代碼單選多選下拉列表
   
   
   
   
$s->assign('add',['hn'=>'河南省','sh'=>'上海','bj'=>'北京']);$s->assign('adf',['河南省','上海','北京']);
html代碼
   
   
   
   
{html_checkboxes name='id' options=$add selected='bj' separator='&nbsp;&nbsp;'}<br>{html_checkboxes name='id' output=$adf selected=['河南省','北京'] values=$adf separator='&nbsp;&nbsp;'}<br>{html_radios name='id' output=$add selected='上海' values=$add separator='&nbsp;&nbsp;' }<br>{html_options name='id' output=$add selected='上海' values=$add separator='&nbsp;&nbsp;' }<br>{html_options name='id' options=$add selected='bj' values=$add separator='&nbsp;&nbsp;' }<br>

{mailto address="dfsfds@126.com"}點擊能夠直接登陸發送郵件

<a href="mailto:webrex@126.com">給我寫信</a>  

 隨機色
   
   
   
   
if($c=='rand'){ $cs='0123456789abcdef'; $ccc='#'; $ccc.=substr($cs, mt_rand(0,strlen($cs)-1),1); $ccc.=substr($cs, mt_rand(0,strlen($cs)-1),1); $ccc.=substr($cs, mt_rand(0,strlen($cs)-1),1); $ccc.=substr($cs, mt_rand(0,strlen($cs)-1),1); $ccc.=substr($cs, mt_rand(0,strlen($cs)-1),1); $ccc.=substr($cs, mt_rand(0,strlen($cs)-1),1); $c=$ccc; }
編寫顏色修飾器modifier.cc.php
   
   
   
   
<?phpfunction smarty_modifier_cc($string,$c='rand'){ if($c=='rand'){ $cs='0123456789abcdef'; $ccc='#'; $ccc.=substr($cs, mt_rand(0,strlen($cs)-1),1); $ccc.=substr($cs, mt_rand(0,strlen($cs)-1),1); $ccc.=substr($cs, mt_rand(0,strlen($cs)-1),1); $ccc.=substr($cs, mt_rand(0,strlen($cs)-1),1); $ccc.=substr($cs, mt_rand(0,strlen($cs)-1),1); $ccc.=substr($cs, mt_rand(0,strlen($cs)-1),1); $c=$ccc; } return "<span style='color:$c'>$string</span>";}
    
    
    
    
{$title|cc}<br>
不要修改此文件,此文件爲編譯型的修改器









相關文章
相關標籤/搜索