Smarty
Day01-----smarty的使用
作用:把php+html分離,程序和美工
使用:
1、下載源碼包
2、目錄結構
libs
源碼文件
Smarty.class.php
template //模板文件 html文件
template_c //程序運行過程中,自動產生的,模板編譯文件
3、實例化
require "Smarty.class.php";
$smartyOb=new Smarty();
4、配置
告訴Smarty哪個目錄是放模板html的
$smartyOb->setTemplateDir(path);
告訴smarty哪個目錄是放編譯文件的
$smartyOb->setCompileDir(path)
5、顯示模板
$smartyOb->display("模板名稱及路徑");
如何給模板傳值
$smartyOb->assign('模板上名稱',被傳遞的變量);
在模板上如何調用
模板標簽
{$名稱}
數組
{$數組名.下標}
二維數組
array(
0=>array('title'=>'t1','pubtime'=>1234567890,'author'=>'xiaoli'),
1=>array('title'=>'t2','pubtime'=>1334567890,'author'=>'xiaoli'),
array('title'=>'t3','pubtime'=>1434567890,'author'=>'xiaoli'),
array('title'=>'t4','pubtime'=>1534567890,'author'=>'xiaoli'),
)
遍歷數組
{foreach 數組名 as 變量名}
{$變量名.title}
{/foreach}
下標值
<{$變量名@key}> <{$變量名@index}>
循環次數
<{$變量名@total}>
當前是第幾次循環
<{$變量名@iteration}>
是否為第一次循環
<{$變量名@first}>
是否為最後一次循環
<{$變量名@last}>
案例:
實現一個隔行背景顏色變化
<{if 條件}>
代碼
<{/if}>
練習:
給每個li加上下劃線(虛線),最後一行除外
了解內容:
<{section name=s1 loop=被遍歷的數組}>
<{$被遍歷的數組[s1].下標}>
<{/section}>
屬性:
<{$smarty.section.s1.total}>
<{$smarty.section.s1.index}>
<{$smarty.section.s1.iteration}>
<{$smarty.section.s1.last}>
<{$smarty.section.s1.first}>
練習:
使用section,實現隔行背景顏色不一樣
變量調節器
模板標簽定界符的指定:
<{}>
$smartyOb->left_delimiter="<{";
$smartyOb->right_delimiter="}>";
day02---------,回顧day01的內容,擴充新知識
Smarty
1、Smarty,放在php主程序中
2、配置
$smartyOb->setTemplateDir()
$smartyOb->setCompileDir()
$smartyOb->left_delimiter()
$smartyOb->right_delimiter()
3、給模板傳值
$smartyOb->assign("模板變量名稱",變量);
4、顯示模板
$smartyOb->display(path);
{$名稱}
{$數組.下標}
{foreach 數組名 as 變量}
{$變量名}
{/foreach}
標簽屬性:
{$變量名@key}
{$變量名@index}
{$變量名@iteration}
{$變量名@total}
{$變量名@first}
{$變量名@last}
{if 條件}
{else}
{/if}
變量調節器:
{第一個參數|函數名:第二個參數:.......}
文章詳細頁:
02_detail.php?id=5
1、配置smarty
2、接收文章id
3、實例化pdo
4、拼sql語句
5、執行
6、獲取數據
7、給模板傳值
8、顯示模板
9、套模板標簽,使用主程序傳遞過來的數據
頁面拆分
{include file="模板的路徑"}
注冊函數
function fun1(){
return 'abc';
}
$smartyOb->registerPlugin("function","模板函數名","被注冊的函數名稱");
在模板上調用:
{模板函數名稱 名=值 名=值 ....}
如何傳參???
1、參數個數最多兩個,
第一個接收的模板上所有的傳參,
第二參數接收的是當前的smarty對象。
緩存
數據庫中的數據被緩存。
好處:減輕了mysql服務器的壓力
1、指定緩存文件的存放目錄
$smartyOb->setCacheDir(ROOT."day02/cache");
2、開啟緩存
$smartyOb->caching=true;
3、指定緩存的生命周期。
$smartyOb->cache_lifetime=100;//秒
作用:判斷緩存文件是否存在且有效
$smartyOb->isCached("模板名稱及路徑",id)
$smartyOb->display("模板名稱及路徑",id);