PHP模板之Smarty安裝與使用入門教程

來源:互聯網
上載者:User

 在利用PHP開發大型、互動式網站時,我們時常遇到與美工如何合作的問題,通常我們的解決方案是由美工設計頁面後交付程式設計者進行開發,再交付美工對頁面進行改善,來回重複好幾回,如果遇到程式設計者對HTML不熟悉,對雙方來說更是個痛苦的差事,效率也更低下,這時候如果有模板支援就顯得非常重要。

  我們知道PHP語言作為開源社區的一員,提供了各種模板引擎,如FastTemplate,Smarty,SimpleTemplate等,而Smarty是現在使用得比較多的PHP模板引擎,今天和大家分享在PHP開發中如何安裝與使用Smarty,也算是對Smarty的入門學習。

準備工作

  1、選擇安裝Smarty的目錄

  如果擁有伺服器許可權,考慮到安全性可以選擇將Smarty安裝在WEB程式文檔目錄之外的地方,然後通過將Smarty安裝目錄位址包含在PHP.INI檔案中的include_path選項。

  如果是虛擬機器主機許可權,或者好幾個項目,可以將Smarty安裝在各自的項目目錄中,在require Smarty類檔案,也可以使用Smarty模板引擎。當然為了安全考慮,你可以通過apache禁止相關目錄訪問。

  另外這兩種Smarty安裝方式在移植性方面有所區別,第一種方式需要保證每台伺服器有相同的Smarty配置,第二種方式對每台伺服器配置沒有影響。你可以根據各自的需要選擇Smarty的安裝方式。

  2、下載Smarty,請點擊這裡下載Smarty,我選擇的是Smarty-2.6.25

Smarty安裝步驟

  1、解壓下載的Smarty-2.6.25壓縮包

  2、拷貝libs檔案夾到WEB程式目錄下,我的目錄為test/smarty

  Linux下的安裝方法可以參考這裡。

  在安裝完Smarty模板後,我們開始簡單使用Smarty。

Smarty使用

1、建立相關目錄

  由於在使用Smarty的過程中,Smarty會產生編譯的模板檔案以及其他設定檔、快取檔案,我們需要建立相關的目錄。我在test/smarty目錄下,另外建立了tpls目錄,並在tpls目錄下建立templates、templates_c、configs、cache目錄。為什麼需要建立這些目錄呢?開啟Smarty.class.php檔案,我們可以看到Smarty類定義了部分的成員屬性。

  $template_dir:設定所有模板檔案都需要放置的目錄位址。預設情況下,目錄是:“./templates”,也就是在PHP執行程式同一個目錄下尋找該模板目錄。

  $compile_dir:設定Smarty編譯過的所有模板檔案的存放目錄位址。預設目錄是:“./templates_c”,也就是在PHP執行程式同一個目錄下尋找該編譯目錄。如果你在Linux伺服器上建立這個目錄,你還需要修改此目錄的許可權,使它有寫的許可權。

  $config_dir:設定用於存放模板特殊設定檔的目錄,預設目錄是:“./configs”,也就是在PHP執行程式同一個目錄下尋找該配置目錄。

  $cache_dir:在啟動緩衝特性的情況下,這個屬性所指定的目錄中放置Smarty緩衝的所有模板。預設目錄是:”./cache”,也就是在PHP執行程式同一個目錄下尋找該緩衝目錄。你也可以用你自訂的緩衝處理函數來控制快取檔案,它將會忽略這項設定。同樣如果你在Linux伺服器上建立這個目錄,你還需要修改此目錄的許可權,使它有寫的許可權。

  為了系統安全和移植性考慮,建議不要將這些目錄建立在PHP執行程式同一目錄下,可以將它建立在PHP執行程式目錄之外,如果已建立在PHP執行程式同一目錄下,可以通過Apache做好目錄限制訪問工作。

2、建立相關設定檔

  我們需要建立一個設定檔,來覆蓋Smarty類的預設成員屬性,並命名為main.php,儲存在smarty目錄下,以後哪個指令碼需要使用Smarty,我們只要把main.php包含進來即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
<?
include("./smarty/libs/Smarty.class.php");
define('SMARTY_ROOT', './smarty/tpls');
$tpl = new Smarty();
$tpl->template_dir = SMARTY_ROOT."/templates/";
$tpl->compile_dir = SMARTY_ROOT."/templates_c/";
$tpl->config_dir = SMARTY_ROOT."/configs/";
$tpl->cache_dir = SMARTY_ROOT."/cache/";
$tpl->caching=1;
$tpl->cache_lifetime=60*60*24;
$tpl->left_delimiter = '<{';
$tpl->right_delimiter = '}>';
?>

注釋
第1-8行:主要定義一個smarty對象,同時設定模板檔案、編譯檔案、快取檔案、設定檔的存放目錄,覆蓋Smarty.class.php中的預設值。

第9-10行:設定開啟緩衝,同時設定緩衝的有效時間為1天。
知識點:$caching用來設定是否開啟緩衝功能。預設值設為0或無效。你也可以為同一個模板設有多個緩衝,當值為1或2時啟動緩衝。1告訴Smarty使用當前的$cache_lifetime變數判斷緩衝是否到期。2告訴Smarty使用產生緩衝時的cache_lifetime值。建議在項目開發過程中關閉緩衝,將值設定為0

第11-12行:設定smarty語言的左右結束符,我們知道大括弧是smarty的預設定界符,但在和javascript、css等結合時可能會產生衝突,所以這裡我們設定為<{和}>。

3、建立一個模板檔案

  一般情況下在美工頁面設計完畢後,雙方的交集點是模版檔案,雙方約定後,程式員不需要花太大的精力在前台,這就是使用Smarty模板引擎進行開發的好處。

  我們首先建立一個簡單的模版檔案,名為leapsoul.tpl,你可在html檔案中加入smarty變數後將檔案另存新檔tpl類型的檔案。

1
2
3
4
5
6
7
8
9
10
11
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=gb2312">
<title>
<{ $title }>
</title>
</head>
<body>
<{ $content }>
</body>
</html>

注釋:在這個tpl檔案中設定了title和content兩個smarty變數,檔案儲存為leapsoul.tpl,同時將其儲存在test/smarty/tpls/templates模板檔案目錄下。

4、建立應用程式檔案

  模版檔案類似於一個表現層,在建立完模板檔案後,我們需要一個應用程式去驅動表現層,應用程式檔案定義為smarty.php。

1
2
3
4
5
6
7
8
9
<?
include("smarty/main.php");

$tpl->assign("title", "leapsoul.cn為你展示smarty模板技術");

$tpl->assign("content", "leapsoul.cn通過詳細的安裝使用步驟為你展示smarty模板技術");

$tpl->display("leapsoul.tpl");
?>

注釋

  在這段代碼中我們主要用到smarty中的兩個函數assign和display,assign你可以理解為為變數賦值,display主要是用來將網頁輸出。更多smarty函數今後會詳細介紹。

其他說明

  由於我們開啟了緩衝功能,有興趣的朋友可以開啟cache和templates_c,cache目錄存放了這個模板的快取檔案,檔案開頭部分有緩衝資訊,如檔案的產生時間和到期時間等,其他的和一般的HTML檔案沒有多大的區別,而templates_c存放了模板經過編譯後的PHP執行檔案。

  至此一個簡單入門的Smarty模板應用執行個體就算介紹完成了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.