Smarty模板快速入门


Posted in PHP onJanuary 04, 2007

在PHP的世界里已经出现了各式各样的模板类,但就功能和速度来说Smarty还是一直处于领先地位,因为Smarty的功能相对强大,所以使用起来比其他一些模板类稍显复杂了一点。现在就用30分钟让您快速入门。

一. 安装

    首先打开网页http://smarty.php.net/download.php,下载最新版本的Smarty。解压下载的文件(目录结构还蛮复杂的)。接下来我演示给大家一个安装实例,看过应该会举一反三的。
    (1) 我在根目录下建立了新的目录learn/,再在learn/里建立一个目录smarty/。将刚才解压缩出来的目录的libs/拷贝到smarty/里,再在smarty/里新建templates目录,templates里新建cache/,templates/,templates_c/, config/.

    (2) 新建一个模板文件:index.tpl,将此文件放在learn/smarty/templates/templates目录下,代码如下: 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">   
<html>   
<head>   
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">   <title>Smarty</title>   
</head>   
<body>   
{$hello}   
</body>   
</html> 

新建index.php,将此文件放在learn/下: 

<?php   
//引用类文件   
require 'smarty/libs/Smarty.class.php';   $smarty = new Smarty;   
//设置各个目录的路径,这里是安装的重点   
$smarty->template_dir = "smarty/templates/templates";   
$smarty->compile_dir = "smarty/templates/templates_c";   
$smarty->config_dir = "smarty/templates/config";   
$smarty->cache_dir = "smarty/templates/cache";    
    
//smarty模板有高速缓存的功能,如果这里是true的话即打开caching,但是会造成网页不立即更新的问题,当然也可以通过其他的办法解决   
$smarty->caching = false;   
$hello = "Hello World!";   
//赋值   
$smarty->assign("hello",$hello);   
//引用模板文件   
$smarty->display('index.tpl');   
?>
 

(3) 执行index.php就能看到Hello World!了。

二. 赋值

       在模板文件中需要替换的值用大括号{}括起来,值的前面还要加$号。例如{$hello}。这里可以是数组,比如{$hello.item1},{$hello.item2}…
       而PHP源文件中只需要一个简单的函数assign(var , value)。
       简单的例子:
       *.tpl:
       Hello,{$exp.name}! Good {$exp.time}

       *.php:
       $hello[name] = “Mr. Green”;

       $hello[time]=”morning”;
       $smarty->assign(“exp”,$hello);

       output:
       Hello,Mr.Green! Good morning

三. 引用
       网站中的网页一般header和footer是可以共用的,所以只要在每个tpl中引用它们就可以了。
       示例:*.tpl:
    {include file="header.tpl"}

       {* body of template goes here *}

       {include file="footer.tpl"}

四. 判断
       模板文件中可以使用if else等判断语句,即可以将一些逻辑程序放在模板里。"eq", "ne", "neq", "gt", "lt", "lte", "le",  "gte"  "ge", "is even", "is odd", "is not even", "is not odd", "not", "mod", "div by", "even by", "odd by","==","!=",">", "<","<=",">="这些是if中可以用到的比较。看看就能知道什么意思吧。

      示例:
      {if $name eq "Fred"}

                     Welcome Sir.

    {elseif $name eq "Wilma"}

                     Welcome Ma'am.   

    {else}
                     Welcome, whatever you are.

    {/if}

五. 循环

       在Smarty里使用循环遍历数组的方法是section,如何赋值遍历都是在模板中解决,php源文件中只要一个assign就能解决问题。
       示例:
{* this example will print out all the values of the $custid array *}

{section name=customer loop=$custid}

              id: {$custid[customer]}<br>
{/section}

OUTPUT:

id: 1000<br>
id: 1001<br>
id: 1002<br>

六. 常见问题

       Smarty将所有大括号{}里的东西都视为自己的逻辑程序,于是我们在网页中想插入javascript函数就需要literal的帮忙了,literal的功能就是忽略大括号{}。
       示例:
{literal} 
       <script language=javascript> 

             function isblank(field) { 

                       if (field.value == '')  
                               { return false; } 

                       else 
                               { 

                               document.loginform.submit(); 
                               return true; 

                               } 

             } 

       </script> 
{/literal} 

PHP 相关文章推荐
php 执行系统命令的方法
Jul 07 PHP
用sql命令修改数据表中的一个字段为非空(not null)的语句
Jun 04 PHP
php下批量挂马和批量清马代码
Feb 27 PHP
最新用php获取谷歌PR值算法,附上php查询PR值代码示例
Dec 25 PHP
PHP中全局变量global和$GLOBALS[]的区别分析
Aug 06 PHP
Yii框架结合sphinx,Ajax实现搜索分页功能示例
Oct 18 PHP
PHP编写daemon process 实例详解
Nov 13 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
Jun 07 PHP
PHP使用ActiveMQ实例
Feb 05 PHP
php xhprof使用实例详解
Apr 15 PHP
PHP实现单例模式建立数据库连接的方法分析
Feb 11 PHP
PHP日期和时间函数的使用示例详解
Aug 06 PHP
菜鸟学PHP之Smarty入门
Jan 04 #PHP
推荐php模板技术[转]
Jan 04 #PHP
推荐个功能齐全的发送PHP邮件类
Jan 03 #PHP
php和js交互一例-PHP教程,PHP应用
Jan 03 #PHP
URL Rewrite的设置方法
Jan 02 #PHP
DISCUZ 分页代码
Jan 02 #PHP
帖几个PHP的无限分类实现想法~
Jan 02 #PHP
You might like
《PHP编程最快明白》第六讲:Mysql数据库操作
2010/11/01 PHP
rrmdir php中递归删除目录及目录下的文件
2011/05/15 PHP
浅析php中jsonp的跨域实例
2013/06/21 PHP
谈谈PHP中substr和substring的正确用法及相关参数的介绍
2015/12/16 PHP
图片自动缩小的js代码,用以防止图片撑破页面
2007/03/12 Javascript
一个用javascript写的select支持上下键、首字母筛选以及回车取值的功能
2009/09/09 Javascript
JavaScript 定义function的三种方式小结
2009/10/16 Javascript
图像替换新技术 状态域方法
2010/01/28 Javascript
如何改进javascript代码的性能
2015/04/02 Javascript
javascript定义类和类的实现实例详解
2015/12/01 Javascript
JS获取html元素的标记名实现方法
2016/10/08 Javascript
浅谈javascript alert和confirm的美化
2016/12/15 Javascript
js绑定事件和解绑事件
2017/04/27 Javascript
JavaScript对JSON数据进行排序和搜索
2017/07/24 Javascript
jQuery实现简单的计时器功能实例分析
2017/08/29 jQuery
vue.js在标签属性中插入变量参数的方法
2018/03/06 Javascript
微信小程序支付功能 php后台对接完整代码分享
2018/06/12 Javascript
Vue中computed及watch区别实例解析
2020/08/01 Javascript
玩转python selenium鼠标键盘操作(ActionChains)
2020/04/12 Python
pandas DataFrame 删除重复的行的实现方法
2019/01/29 Python
Python自动化导出zabbix数据并发邮件脚本
2019/08/16 Python
使用turtle绘制五角星、分形树
2019/10/06 Python
Python API自动化框架总结
2019/11/12 Python
Python 使用type来定义类的实现
2019/11/19 Python
详解opencv中画圆circle函数和椭圆ellipse函数
2019/12/27 Python
python如何实现复制目录到指定目录
2020/02/13 Python
HTML5之消息通知的使用(Web Notification)
2018/10/30 HTML / CSS
德国香水、化妆品和护理产品网上商店:Parfumdreams
2018/09/26 全球购物
Nice Kicks网上商店:ShopNiceKicks.com
2018/12/25 全球购物
广州品高软件.net笔面试题目
2012/04/18 面试题
职业生涯规划书基本格式
2014/01/06 职场文书
计算机专业毕业生自荐书
2014/06/02 职场文书
公司董事长岗位职责
2014/06/08 职场文书
2016大学自主招生推荐信范文
2015/03/23 职场文书
违纪开除通知书
2015/04/25 职场文书
前端实现滑动按钮AJAX与后端交互的示例代码
2022/02/24 Javascript