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配置文件代码,没错的话一句句加,看在哪行的时候出了错误。