Smarty是一款主要用于PHP开发的模板引擎,为用户提供了逻辑与外在内容的分离,使得程序员在改变程序逻辑内容的情况下不会影响到网页的美观,主要适用于多人项目开发。感兴趣的朋友可以来欧普軟件园下载体验这款smarty的神奇功能。

什麽是smarty?
smarty是一個使用PHP寫出來的模板PHP模板引擎,它提供了邏輯與外在內容的分離,簡單的講,
目的就是要使用PHP程序員同美工分離,使用的程序員改變程序的邏輯內容不會影響到美工的頁面設計,美工重新修改頁面不會影響到程序的程序邏輯,這在多人合作的項目中顯的尤爲重要。
Smarty特點
1. 速度:采用smarty编写的程序可以获得最大速度的提高,这一点是相对于其它的模板引擎技术而言的。
2. 编译型:采用smarty编写的程序在运行时要编译成一个非模板技术的PHP文件,这个文件采用了PHP与HTML混合的方式,在下一次访问模板时将WEB请求直接转换到这个文件中,而不再进行模板重新编译(在源程序没有改动的情况下)
3. 缓存技术:smarty选用的一种缓存技术,它可以将用户最终看到的HTML文件缓存成一个静态的HTML页,当设定smarty的cache属性为true时,在smarty设定的cachetime期内将用户的WEB请求直接转换到这个静态的HTML文件中来,这相当于调用一个静态的HTML文件。
4. 插件技术:smarty可以自定义插件。插件实际就是一些自定义的函数。
5. 模板中可以使用if/elseif/else/endif。在模板文件使用判断语句可以非常方便的对模板进行格式重排。
Smarty安裝教程
下載smarty擴展壓縮包,解壓(很自然的事情),放置于擴展目錄中(extensions)。
保证smarty主文件路径:application/extensions/smarty/smarty-2.1/Smarty.class.php 。
Smarty使用教程
1、在Controller文件中重定義initView()類方法,代碼如下:
/**
* 实例化Smarty.
*
* @access protected
* @return object
*/
protected function initView() {
return $this->ext('smarty');
}
如果想讓程序效率運行更高一點,可以直接加載並實現化smarty。代碼如下:
/**
* 实例化Smarty.
*
* @access protected
* @return object
*/
protected function initView() {
//文件加载
$filePath = BASE_PATH . '/extensions/smarty/smarty-2.1/Smarty.class.php';
Doit::loadFile($filePath);
$smarty = $this->instance('Smarty');
$smarty->template_dir = BASE_PATH . '/views/';
$smarty->compile_dir = CACHE_PATH . '/views/';
$smarty->cache_dir = CACHE_PATH . '/data/';
$smarty->config_dir = BASE_PATH . '/config/';
return $smarty;
}
然後,這個重定義initView()的Controller文件中的Action類方法中在對視圖文件處理時,就可以直接使用Controller提供的類方法。實例代碼如下:
public function indexAction() {
$this->assign('content', '你好,这是一个Smarty扩展实例');
$this->display('index/index.html');
}
其视图文件路径为:application/views/index/index.html, 内容为:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>实例:Smarty扩展</title>
</head>
<body>
{$content}
</body>
</html>
smarty數據包說明
下載本站提供的數據包,解壓縮會得到兩個主要文件夾demo和libs
demo文件夾爲示例文件夾,裏面包含默認文件夾結構,是我們要進行編寫程序代碼的主要文件夾。demo裏文件夾的名稱都是smarty默認的目錄結構名稱,可以通過改smarty對應屬性值,再把文件夾名改成我們想要的名稱。
libs爲smarty代碼源文件夾,一般不動。
/libs/smarty.class.php #主文件
/libs/sysplugins/ #内部plugin
/libs /plugins/ #外部plugin,可自由扩充
/demo/cahce/ #放置缓存文件
/demo/configs / #放置可以载入的配置文件
/demo/templates/ #放置模板文件
/demo/templates_c/ #放置对模板编译后的文件
可以把解壓文件夾名改成我們想要的項目名,demo也可以改成我們想要的具體存放編碼的文件夾的名稱
常見問題解答
1.phpcms模版引擎跟smarty模版引擎有什麽不同?
smarty模板,在php文件里面的查询数据库,然后经由过程smarty语句传到模板里面,然后显示。phpcms模版引擎,页面经由过程 include template() 调用 function template($module = \'phpcms\', $template = \'index\') ,return $compiledtplfile页面返回编译的
2.PHP模板引擎smarty3.0以上版本怎麽清除緩存?
$smarty->clear_cache()清除的是你之前設置顯示的緩存頁面,裏面有兩個參數,一個是模板頁面名稱,一個是緩存ID。
如果你在用命令$smarty->display()顯示一個模板頁面時設置了緩存ID,那麽這個頁面就會一直緩存,以後你顯示此模板頁面的都將是這次緩存的內容。想要清除此緩存頁面就要用到$smarty->clear_cache();
例如:如果你在顯示test.html模板時指定頁面緩存ID爲123:$smarty->display("test.html",123);
那麽只有使用了$smarty->clear_cache("test.html",123);這行代碼才能清除緩存。
3.用smarty模版引擎的網站總是打不開且出現錯誤報告
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, pp@sina.com and inform them of the
time the error occurred, and anything you might have done that may have caused
the error.
More information about this error may be available in the server error log
该问题是配置错误,先试一下把assign display 等代码删掉,只留加载smarty配置文件代码,没错的话一句句加,看在哪行的时候出了错误。