最近沒事兒做,就研究研究smarty模版引擎,越來越覺得smarty的強大了,smarty的教程在網上好像都比較亂。
1.下載smarty,http://www.smarty.net/download
2.把下載下來的smarty改名為smarty然後複製到建立好的檔案夾裡
3.建立一個smarty.inc.php(也可以是別的)
<?phprequire_once 'smarty/Smarty.class.php';$smarty=new Smarty();$smarty->template_dir='templates/';$smarty->compile_dir='templates_c/';$smarty->cache_dir='temp/';$smarty->config_dir='configs/';$smarty->caching=0; //緩衝$smarty->cache_lifetime=60;if (!defined('SITE_URL')){ $url=$_SERVER['REQUEST_SCHEME'].'://'.$_SERVER['HTTP_HOST']; define('SITE_URL', $url);}if (!defined('__ROOT__')){ define('__ROOT__', rtrim(dirname(__FILE__),'\\').'\\');}//去除反斜線if (get_magic_quotes_gpc()){ function stripcslashes_arr($array){ is_array($array)?array_map('srtipcslashes_arr', $array):stripcslashes($array); } $_POST=stripcslashes_arr($_POST); $_GET=stripcslashes_arr($_GET); $_REQUEST=stripcslashes_arr($_REQUEST); $_COOKIE=stripcslashes_arr($_COOKIE); $_SESSION=stripcslashes_arr($_SESSION);}//時區設定date_default_timezone_set('PRC');//載入functionif (file_exists('common/common.php')){ require_once 'common/common.php';}
並且手動建立相應的目錄,調試的時候建議把緩衝關了。
然後建立一個index.php,
<?phprequire_once 'smarty.inc.php';$title='第一個標題';$smarty->assign('title',$title);$people=array( array('name'=>'張三','sex'=>'男','age'=>'20'), array('name'=>'李四','sex'=>'男','age'=>'40'), array('name'=>'王五','sex'=>'女','age'=>'32'), );$smarty->assign('people',$people);$smarty->display('index.tpl');
在templates這個檔案夾裡建立一個index.tpl,調用方式為{$title},然後訪問index.php是不是ok了?
數組的訪問方式,比如$people這個二維數組,就是{$people.0.name}輸出的就是張三
對象的訪問方式,{$對象名->屬性(方法)}
接下來就是變數調節器,其實日常用到的並不多,所以我就練習了幾個常用的
1.capitalize首字母大寫{$title|captalize}
2.count_characters統計字元數 {$title|count_characters},新版的smarty統計中文也沒問題,統計的時候會過濾掉空格預設),{$title|count_character:true},就不會過濾空格了
3.cat連接字串{$title|cat:"..."} output:第一個標題...
4.date_format 格式化時間{$smarty.now|date_format:"%T-%m-%d %H:%M:%S"} 輸出目前格式化的時間,第二個參數為格式化失敗以後預設顯示{$smarty.now|date_format:"%T-%m-%d %H:%M:%S":"0000-00-00"}
5.default 變數為空白的時候要輸出什麼,或者變數沒有定義,都可以指定預設輸出{$title|dafault:"暫時沒有資料"}
6.escape 編碼,最常用的就是url,html編碼了,把html代碼轉換為實體儲存到資料庫等作用,預設為html編碼
7.indent 縮排,發布文章的時候會需要這個。第一個參數指定要縮排的字元數,第二個參數指定要用什麼字元代替{$title|indent:4:"..."} output:............第一個標題
8.lower 所有字元轉換為小寫
9.nl2br 等同php的nl2br函數
10.regex_replace 正則替換,第一個為Regex,第二個為要替換成的文本
11.replace 簡單替換,用法等同regex_replace
12.strip 去掉多餘的空格
13.strip_tags 去掉html標籤,
14.truncate 截取字元數,{$title|truncate:10}截取10個字元,{$title|truncate:10:"..."}截取以後在後面顯示...{$title|truncate:10:"..."|true}截取到詞的邊界false)的時候,為true的時候是截取到字元邊界
15.upper 轉換為大寫
16.wordwrap 行寬約束{$title|wordwrap:10}到了第10個字元就自動換行{$title|wordwrap:10:"<br />"}用什麼字元約束,如果沒有這個,他是不換行的。第三個如果為true,{$title|wordwrap:10:"<br />",true}約束到到詞的邊界false)的時候,為true的時候是約束到字元邊界
這些變數調節器也可以根據需要去組合在一起的。