保留變量 方便使用phpphp
不用assignhtml
{$smarty}數據庫
get緩存
{$smarty.get.page}cookie
sessionsession
{$smarty.session.user.name}app
server函數
cookies插件
requestorm
const(常量)
變量調節器
escape(跟php中的htmlentities())
$smarty->assign('title','<h3>標題</h3>')
{$title}則直接輸出 html的格式
{$title|escape} 轉碼
escape($title)
default
當沒有的時候則是默認值
date_format
{$smarty.now|date_format:"Y-m-d H:i:s"}
truncate(截取長度)
{"標題標題"|truncate:8}
upper(轉大寫)
{"lamp"|upper}
strtoupper
{"lamp"|strtoupper}
{"="|str_repeat:40}
php中的函數能夠直接做爲變量調節器使用
自定義函數也能夠
內置函數
foreach
{foreach $stulist as $stu}
<tr>
<td>{$stu@index+1}</td>
<td>{$stu.name}</td>
</tr>
{/foreach}
if elseif else
while
include
for
(0-100的偶數)
{for $i=1 to 100 step 2}
{i}
{/for}
A. Smarty配置
定義定界符(屬性)
$left_delimiter[左定界符]
$right_delimiter[右定界符]
$smarty->left_delimiter='<{';
$smarty->right_delimiter='}>';
定義模版目錄
$template_dir[模板目錄]
$smarty->template_dir='./view';//屬性
$smarty->setTemplateDir('./view');//方法
定義編譯的目錄
$smarty->setCompileDir('./view_c');
編譯目錄不存在則本身建立
緩存目錄
$smarty->setCachrDir('./cache') ;
配置文件的目錄
$smarty->setConfigDir('./config');
B. Smarty緩存
$smarty->conpile_check [編譯檢查]
$smarty->conpile_compile [強制編譯]
1.開啓緩存
$caching
$smarty->caching=1;
接受參數
$id=intval($_GET['id'])l
//判斷緩存是否有效,把文章ID做爲緩存ID
//同一個模版,就能夠有多個緩存文件
if(!smarty->isCached('article.tpl',$id)){
$data=array(
2=>array('id'=>2,'title')
)
}
2.緩存時間
$smarty->cache_lifetime=50 //秒錶 默認是3600
3.//判斷是否有緩存
if(!$smarty->isCached('1.tpl')){
//有多是從數據庫查詢
//分配變量
$smarty->assign('title','標題')
//當前時間
$smarty->assign('now',date('Y-m-d H:i:s'));
}
4.$smarty->display('article.tpl',$id)
不想緩存的地方
{nocache}
{$smarty.now|date_format}
{/nocache}
//清除某一個模版的緩存
$smarty->clearCache('article.tpl')
//清除某一個模版的ID的緩存
$smarty->clearCache('article.tpl',2)
C. Smarty插件
第一種方法
//將自定義函數註冊爲變量調節器
//第一個參數是插件的類型(9種)
//第二個參數是在Smarty中使用的名字
//第三個參數是咱們自定義的函數名字
$smarty->registerPlugin('modifier','wanghaoyu',myfun)
第二種方法
//添加一個插件目錄
//將特定命名的插件放到目錄中
//規則:類型前綴.函數名.php(9中類型前綴)
$smarty->addPluginDir('./myPlugins')
自定義函數的 smarty_modifier_前綴不能改
D. Smarty繼承 extends
display('index.html')
在index代碼中寫上
{extends 'base.html'}
{block name='main'}
<div>
index的內容
</div>
{/block}
在base.html想改的區域
{block name='main'}
{/block}
惟一能作的就是重寫某一塊
2.在block裏面追加內容
{block name='top' append}
<div>haha</div>
{/block}
3.某個部分的背景變色,當內容變的時候同時變
{block name='top'}
<div class='top'>
{$smarty.block.parent}
</div>
{/block}
4.title
模版
{block name='head'}
<head>
<title>{$smarty.block.child}</title>
</head>
{/block}
顯示頁
{block name='head'}文章{/block}
E. Smarty 的include