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。在模板文件使用判断语句可以非常方便的对模板进行格式重排。

缺点:

1. 需要实时更新的内容。例如像股票显示,它需要经常对数据进行更新,这类型的程序使用smarty会使模板处理速度变慢。
2. 小项目。小项目因为项目简单而美工与程序员兼于一人的项目,使用smarty会丧失php开发迅速的优点

1.下载源代码

smarty放到我们的项目里面。然后再在根目录下新建两个文件夹,一个叫templates这个是模板文件夹,一个叫templates_c,这个是存放编译文件的文件夹。

2.配置smarty

在项目的根目录下面新建一个文件,叫smarty_inc.php,其实这个文件和路径都是可以变的,在里面输入相关的配置

 代码如下 复制代码

include_once './smarty/Smarty.class.php';
$smarty = new smarty();
$smarty->template_dir = './templates/'; //模板文件
$smarty->compile_dir = './templates_c/'; //模板编译文件的存放路径
$smarty->config_dir = './config/';//该变量定义用于存放模板配置文件的目录,默认情况下,目录是:"./configs",也就是说他将会在和php执行脚本相同的目录下寻找配置目录。
$smarty->cache_dir = './cache/';//缓存的目录文件夹
$smarty->caching = false; //是不是开启缓存
$smarty->left_delimiter = "{"; //变量的标示符的开始
$smarty->right_delimiter = "}"; //变量的标示符的结束
?>

再在templates下面新建一个文件,可以html,tpl的

{$test}

我们看到在html的正文中{$test},这个表示这个一个变量,在编译的时候需要替换里面的内容
3.测试配置是否成功

新建一个php的文件,输入代码
 

 代码如下 复制代码
include_once 'smaty_inc.php'; //引入配置文件
$test="this is my test"; //定义变量
$smarty->assign("test",$test); //绑定变量
$smarty->display("test.html"); //指定使用得当模板
?>

现在一起准备完成,在浏览器里面输入访问地址,就可以看到结果了。

行测试,在根目录下建立index.php文件:

 代码如下 复制代码

<?php
include("smarty_inc.php");
$val= array("丁庆","董丹凤","情侣");
$smarty->assign("name",$val);
$smarty->display("index.html");
?>

在templates下建立index.html模板:

 代码如下 复制代码

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset="utf-8">
<title>测试页面</title>
</head>
<body>
<{foreach from=$name item=x}>
数组内容:<{$x}> <br/>
<{/foreach}>
</body>
</html>

给Smarty模板缓存设置id

对于一次调用display()或fetch(),可以存在多个缓存文件。比如说,调用display('index.tpl')时,根据一些条件会有不同的输出内容,而你希望分离这些内容的缓存。要实现这个功能,只要在函数调用时传递$cache_id作为第二个参数即可。
 
display()作为$cache_id。对于每个独立的$my_cache_id值,都会为index.tpl生成独立的缓存。本例中,article_id在URL中传递并被用作$cache_id。
技术注解:从客户端(WEB浏览器)向Smarty或PHP应用传递值的时候,要非常小心。在上例中,使用URL中的article_id虽然看起来很方便,但是可能会有不好的后果。$cache_id用 来在文件系统中创建一个目录,因此,如果用户传入一个特别大的数值,或者写一个脚本在短时间内快速的发送随机的article_id,有可能会在服务器端 造成问题。一定要对传入的数据进行处理然后才使用之。本例中,也许你知道article_id的长度应该是10个字符并只包含数字和字符,并且必须是数据 库中存在的一个article_id。请做这些检查!

调用is_cached()和clear_cache()时,请使用相同的$cache_id作为第二个参数。
 
clear_cache()。
 
例如14-8. 清除一个特定$cache_id的所有缓存

 代码如下 复制代码

<?php
require('Smarty.class.php');
$smarty = new Smarty;

$smarty->caching = 1;

// 清除所有$cache_id为"sports"的缓存
$smarty->clear_cache(null,'sports');

$smarty->display('index.tpl','sports');
?>

这样一来,你可以“组合”你的缓存,只要给它们相同的$cache_id即可

好了,大功告成,就是这么简单,开始你的smarty之旅吧

时间: 2024-08-02 22:19:09

php中smarty模板配置学习笔记的相关文章

Php中smarty常用变量学习笔记

现在开发网站时用到了smarty框架模板,感觉非常好用,较好实现了php源码和html代码的分离.现在分享smarty的一些常用变量. 1.SMARTY_DIR     Smarty目录 定位Smarty类文件的完整系统路径,如果没有定义Smarty目录,Smarty将会试着自动创建合适的值.如果定义了,路径必须要以斜线结束. define("SMARTY_DIR","/usr/local/lib/php/Smarty/"); require_once(SMARTY

Java中Spring 基本配置学习笔记

1.下载 spring 框架 http://www.springsource.org/download/community 2.将spring lib目录下的这些包拷贝到我们应用的lib中 commons-logging.jar spring-beans-4.0.0.M1.jar spring-context-4.0.0.M1.jar spring-core-4.0.0.M1.jar spring-expression-4.0.0.M1.jar 3.建立一个 bean 类  代码如下 复制代码

php中smarty模板条件判断用法实例_php实例

本文实例讲述了php中smarty模板条件判断用法.分享给大家供大家参考.具体实现方法如下: 模板文件test6.html代码: <html> <head> <title>Smarty Test</title> </head> <body> <table width="200" border="0"> {if $cond == 1} <tr> <td>条件成立

JavaWeb中Session对象的学习笔记_java

一.Session简单介绍 在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下).因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据,为用户服务. 二.Session和Cookie的主要区别 Cookie是把用户的数据写给用户的浏览器.Session技术把用户的数据写到用户独占的sessi

Silverlight项目中&quot;自定义控件开发/Style&quot;学习笔记

本文不涉及高深的设计模式(比如mvc,mvvm之类),也没有太多的编程技巧,只是记录自己做为asp.net开发者学习silverlight中自定义控件开发的一些过程,高手请绕过.  先推荐一篇不错的文章http://www.cnblogs.com/carysun/articles/1259025.html 写得很全面,只不过图片讲解不够丰富,初学者可能有些感到跳跃性大了一些.  正文开始:  做过asp.net网站开发的都知道用户控件是一个很方便的功能,通常我们会把一些模块化的功能封装成用户控件

php中Smarty模板初体验_php模板

下面介绍一下Smarty模板引擎的特性: 1. 速度:采用Smarty编写的程序可以获得最大速度的提高,这一点是相对于其它的模板引擎技术而言的. 2. 编译型:采用Smarty编写的程序在运行时要编译成一个非模板技术的PHP文件,这个文件采用了PHP与HTML混合的方式,在下一次访问模板时将WEB请求直接转换到这个文件中,而不再进行模板重新编译(在源程序没有改动的情况下) 3. 缓存技术:Smarty选用的一种缓存技术,它可以将用户最终看到的HTML文件缓存成一个静态的HTML页,当设定Smar

flash中starling组件Feathers学习笔记

  最近在学习starling,然后觉得不可能都自己去写组件,听说有现在的支持starling的Feathers组件,就拿来研究了一下 这个好像是新出,没什么学习资料,都是英文的.部分笔记如下: 1.popups包下有三个类一个接口,对来实现弹出层 2.CalloutPopUpContentManager 比较简单,open方法里直接使用Callout.show(content, source)进行弹出 3.Callout控件功能类似于tip.它能弹出一个带箭头的指向指定displayobjec

linux中Cent OS SVN 服务配置学习笔记

最近研究了下在Cent OS上配置SVN服务及版本库权限设置,下面是我的配置笔记 #安装SVN yum -y install subversion #测试SVN是否已经安装好 svn #创建svn版本库文件夹 mkdir /var/local/svn/ # 编辑自系统启动文件 vi /etc/rc.local 把光标用方向键移动到一个空行 按i输入下面语句 (如果有没有空行,把光标放在任意行按o) svnserve -d -r /var/local/svn/ 按esc,再输入:wq保存退出 启动

linux中iptables配置学习笔记

iptables是一个Linux下优秀的nat+防火墙工具,我使用该工具以较低配置的传统pc配置了一个灵活强劲的防火墙+nat系统,小有心得,看了网上也有很多这方面的文章,但是似乎要么说的比较少,要么就是比较偏,内容不全,容易误导,我研究了一段时间的iptables同时也用了很久,有点滴经验,写来供大家参考,同时也备日后自己翻阅. 首先要说明的是,iptables操作的是2.4以上内核的netfilter.所以需要linux的内核在2.4以上.其功能与安全性远远比其前辈 ipfwadm,ipch