睡蓮‧池水間

Guest
2012-Feb-12  
0 位會員和 8 位訪客在線上

文章 :: 語言集

Smarty 入門

子標題:Smarty 入門 - 2
  1. 安裝Smarty
  2. 程式的資料夾設定
  3. 第一個用Smarty寫的小程式
  4. 如何安排你的程式架構

Smarty的基礎

安裝Smarty

首先,我們先決定程式放置的位置。
  • Windows下可能會類似這樣的位置:「 d:\appserv\web\demo\ 」。
  • Linux下可能會類似這樣的位置:「 /home/jaceju/public_html/ 」。

接著在程式主資料夾下建立一個 library 資料夾,這是我們用來放置 Smarty 套件的地方。

然後我們到 Smarty 的官方網站下載最新的 Smarty 套件:http://smarty.php.net

解開 Smarty 2.6.0 後,會看到很多檔案,其中有個 libs 資料夾。在 libs 中應該會有 3 個 class.php 檔 + 1 個 debug.tpl + 1 個 plugin 資料夾 + 1 個 core 資料夾。然後直接將 libs 複製到剛剛建立的 library 資料夾下,再更名為 Smarty 就可以了。就這樣?沒錯!這種安裝法比較簡單,適合一般沒有自己主機的使用者。

至於 Smarty 官方手冊中為什麼要介紹一些比較複雜的安裝方式呢?基本上依照官方的方式安裝,可以只在主機安裝一次,然後提供給該主機下所有設計者開發不同程式時直接引用,而不會重覆安裝太多的 Smarty 複本。而筆者所提供的方式則是適合要把程式帶過來移過去的程式開發者使用,這樣不用煩惱主機有沒有安裝 Smarty 。

程式的資料夾設定

以筆者在Windows安裝Appserv為例,程式的主資料夾是「d:\appserv\web\demo\」。安裝好Smarty後,我們在主資料夾下再建立這樣的資料夾:


在 Linux 底下,請記得將 templates_c 的權限變更為 777 。Windows 下則將其唯讀取消。

第一個用Smarty寫的小程式

我們先設定 Smarty 的路徑,請將以下這個檔案命名為 main.php ,並放置到主資料夾下:

main.php

<?php
include "library/Smarty/Smarty.class.php";
define('APP_PATH', str_replace('\\', '/', dirname(__FILE__)));
$tpl = new Smarty();
$tpl->template_dir = APP_PATH . "/templates/";
$tpl->compile_dir = APP_PATH . "/templates_c/";
$tpl->config_dir = APP_PATH . "/configs/";
$tpl->cache_dir = APP_PATH . "/cache/";
?>
照上面方式設定的用意在於,程式如果要移植到其他地方,只要改 APP_PATH 就可以啦。 (這裡是參考 XOOPS 的 )

Smarty 的樣版路徑設定好後,程式會依照這個路徑來抓所有樣版的相對位置 (範例中是 'd:/appserv/web/demo/templates/' ) 。然後我們用 display() 這個 Smarty 方法來顯示我們的樣版。

接下來我們在 templates 資料夾下放置一個 test.htm:(副檔名叫什麼都無所謂,但便於視覺設計師開發,筆者都還是以 .htm 為主。)

templates/test.htm

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>{$title}</title>
</head>
<body>
{$content}
</body>
</html>
現在我們要將上面的樣版顯示出來,並將網頁標題 ($title) 與內容 ($content) 更換,請將以下檔案內容命名為 test.php ,並放置在主資料夾下:

test.php

<?php
require "main.php";
$tpl->assign("title", "測試用的網頁標題");
$tpl->assign("content", "測試用的網頁內容");
// 上面兩行也可以用這行代替
// $tpl->assign(array("title" => "測試用的網頁標題", "content" => "測試用的網頁內容"));
$tpl->display('test.htm');
?>
請打開瀏覽器,輸入 http://localhost/demo/test.php 試試看(依您的環境決定網址),應該會看到以下的畫面:

再到 templates_c 底下,我們會看到其中有一個奇怪的檔案:

%%6B^6B2^6B2BF9A3%%test.htm.php

<?php /* Smarty version 2.6.14, created on 2007-08-11 14:10:33
         compiled from test.htm */ ?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title><?php echo $this->_tpl_vars['title']; ?>
</title>
</head>
<body>
<?php echo $this->_tpl_vars['content']; ?>

</body>
</html>
沒錯,這就是 Smarty 編譯過的檔案。它將我們在樣版中的變數轉換成了 PHP 的語法來執行,下次再讀取同樣的內容時, Smarty 就會直接抓取這個檔案來執行了。

最後我們整理一下整個 Smarty 程式撰寫步驟:

  1. 載入 Smarty 樣版引擎。
  2. 建立 Smarty 物件。
  3. 設定 Smarty 物件的參數。
  4. 在程式中處理變數後,再用 Smarty 的 assign 方法將變數置入樣版裡。
  5. 利用 Smarty 的 display 方法將網頁秀出。


如何安排你的程式架構

上面我們看到除了 Smarty 所需要的資料夾外 (library 、 templates 、 templates_c) ,還有兩個資料夾: configs 、 modules 。其實這是筆者模仿 XOOPS 的架構所建立出來的,因為 XOOPS 是筆者所接觸到的程式中,少數使用 Smarty 樣版引擎的架站程式。所謂西瓜偎大邊,筆者這樣的程式架構雖沒有 XOOPS 的百分之一強,但至少給人看時還有 XOOPS 撐腰。

configs 資料夾一般都是用來存放設定檔的,當然也可以用放存放 Smarty 會用到的 config 設定。

modules 這個資料夾則是用來放置程式模組的,如此一來便不會把程式丟得到處都是,整體架構一目瞭然。

上面我們也提到 main.php ,這是整個程式的主要核心,不論是常數定義、外部程式載入、共用變數建立等,都是在這裡開始的。所以之後的模組都只要將這個檔案包含進來就可以啦。因此在程式流程規劃期間,就必須好好構思 main.php 中應該要放那些東西;當然利用 include 或 require 指令,把每個環節清楚分離是再好不過了。


在上節提到的 Smarty 程式 5 步驟, main.php 就會幫我們先將前 3 個步驟做好,後面的模組程式只要做後面兩個步驟就可以了。


    «« HostGator 的 inodes Opera下的text-shadow »»    

引用

  • 文章地址: http://waterlily-lsl.com/modules/article/view.article.php/c2/79
  • 引用地址: http://waterlily-lsl.com/modules/article/trackback.php/79

評分

10
9
8
7
6
5
4
3
2
1


 

API: RSS | RDF | ATOM

回覆及設定

    關閉


 

最 新 發 表 及 資 訊 區

此為池水間 banner ,需要安裝 Adobe Flash Player 才能觀看內容。

最新留言

最新留言:2012-Jan-6 11:13am
留言編號:76
留言者: wuji888
網主回覆:
總留言數: 71

前往萍踪留影

造訪統計

今天:587
昨天:544
本週:587
本月:6427
總計:376811
平均:292

連結

Powered By XOOPS
Valid XHTML 1.1
Valid CSS 3
登 入