一.  变量
1. php变量
A. 普通变量:{$var}
B. 关联数组:{$array.var1.var2}
C. 数字数组:{$array[0][1]}
D. 对象:{$object->var}
E. 在引号内的使用方法,以关联数组为例,其他类似:{function var="{$array.var1.var2}"}
   F. 声明变量 :
      {assign var="id" value="0"}
      {assign var=running_total value=`$running_total+$some_array[row].some_value`}
      {assign var=fitem value=$pout.a.b scope="global"}
2. conf变量
A. {#var#}
B. 在引号内的使用方法:{function var="{#var#}"}
3. smarty保留变量:略。
二. 变量调节器
1. capitalize / lower / upper
用途:首字母大写 / 转为小写 / 转为大写
用法:{$var|capitalize} / {$var|lower} / {$var|upper}
2. count_characters / count_paragraphs / count_sentences / count_words
用途:计算字节数,默认不计算空格符 / 计算段落数量 / 计算句子数量 / 计算词数
用法:{$var|count_characters}  {$var|count_characters:true} / {$article|count_paragraphs} / {$article|count_sentences} / {$sentence|count_words}
3. cat
用途:字符串连接
用法:{$var|cat:" is a boy."}
4. nl2br
用途:换行符替换为<br/>
用法:{$var|nl2br}
5. regex_replace / replace
用途:正则替换 / 普通替换
用法:{$var|regex_replace:"/

old

/":"[new]"} / {$var|replace:"old":"new"}

6. spacify
用途:在每个字符间插入指定字符
用法:{$var|spacify:"^_^"}
7. date_format
用途:格式化日期,类似"-1 days ago"、"201111010000"、时间戳等都可以,与strftime()功能类似
用法:{$time|date_format:"%H:%M:%S"}
{$item.create_time|date_format:'%Y-%m-%d %H:%M:%S'}
8. default
用途:当变量为空时,设置默认值
用法:{$var|default:"no value"}
9. escape
用途:转码,包括:html,htmlall,url,quotes,hex,hexentity,javascript
用法:{$articleTitle|escape:"html"}
10.indent
用途:文字缩进,可以制定缩进字符数和使用什么字符代替
用法:{$var|indent}  {$var|indent:4}  {$var|indent:4:"\t"}
11.string_format
用途:类似用sprintf
用法:{$var|string_format:"%.2f"}
12.strip / strip_tags
用途:去除多余空白符,可以指定去除的字符 / 去除<>以及包含在里面的所有字符
用法:{$var|strip}  {$var|strip:"&nbsp;"} / {$var|strip_tags}
13.truncate
用途:字符串截取,默认截取80字符,可以指定追加的字符串
用法:{$var|truncate:40}  {$var|truncate:40:"...":true}
14.组合修改器
用途:顾名思义,可以将多个变量调节器组合使用,中间用|来代替
例子:{$articleTitle|lower|spacify|truncate:30:"..."}
三. 内建函数
1. capture
用途:捕获模板内容到某变量var,并不进行输出
用法:
在{capture}{/capture}中间的数据被捕获,可以使用$smarty.capture.var来使用,不指定name的话,默认为default
{capture name=banner}
This is a test.
{/capture}
2. foreach
用途:循环处理
用法:
from: 数组,需要用$
item: 单元元素名称,不需要用$
key: key名称,不需要用$
name: 该循环的名称,可以用于访问该循环,例如:{$smarty.foreach.foreachname.varname}
{foreach item=contact from=$contacts}
{foreach key=key item=item from=$contact}
{$key}: {$item}<br>
{/foreach}
{/foreach}
注意:在foreach中有一些特殊的变量,需要使用{$smarty.foreach.foreachname.***}来访问:
iteration: 表示当前循环的执行次数,初始为1
first: 循环第一次执行时被置为true
last: 同上
total: 用于显示循环执行的次数,在循环中或者循环后皆可使用
show: 是foreach的一个标签,用于决定是否显示该foreach的内容
3. include / insert
用途:包含其他模板 / 与include不同, insert 所包含的内容不会被缓存,每次调用该模板都会重新执行该函数.
用法:{include file="footer.tpl" title="Main menu" logo="http://my.domain.com/logo.gif"}
4. if elseif else
用途:分之判断
用法:
{if $name eq "Fred"}
Welcome Sir.
{elseif $name eq "Wilma"}
Welcome Ma'am.
{else}
Welcome, whatever you are.
{/if}
5. ldelim / rdelim
用途:分别表示左括号、右括号,因为这两个符号被用作smarty模板的标识符
用法:
{ldelim}  {rdelim}
6. literal
用途:在内部的数据当做文本处理,不使用smarty模板解析,主要用于javascript脚本等
用法:
{literal}
......
{/literal}
7. section
用途:循环处理
用法:
name: 该循环的名称
loop:决定循环次数的数组,注意这里的使用方法比较特别,可以使用section来对多个数组进行处理,但必须先用可以决定循环次数的数组给loop赋值
{section name=customer loop=$custid}
id: {$custid[customer]}<br>
name: {$name[customer]}<br>
address: {$address[customer]}<br>
{section name=contact loop=$contact_type[customer]}
{$contact_type[customer][contact]}: {$contact_info[customer][contact]}<br>
{/section}
<p>
{/section}
如果要遍历多维关联数组,需要这样来使用:
{section name=customer loop=$contacts}
name: {$contacts[customer].name}<br>
home: {$contacts[customer].home}<br>
cell: {$contacts[customer].cell}<br>
e-mail: {$contacts[customer].email}<p>
{/section}
注意:与foreach类似,在section中同样有一些特殊变量可供使用,使用方法是:{$smarty.section.sectionname.***}
index: 显示当前循环的索引,默认从0或者start开始
index_prev: 显示上一个循环索引值,默认从-1开始
index_next: 同上,直至最后都比上一次大1
ineration: 同foreach,与index不同,后者是索引
first: 同foreach
last: 同foreach
show: 同foreach
total: 同foreach
{assign var=i value=0}
{section name=total loop=$get_fields_count}
   <tr>
     <td>{$i+1}</td>
     <td>
       <input class="get_name" name="get_field_{$i}_name" id="get_field_{$i}_name" value="{$get_field_name[{$i}]}"/>
     </td>
     <td>
        <input class="get_value" name="get_field_{$i}_value" id="get_field_{$i}_value" value="{$get_field_value[{$i}]}"/>
     </td>
     </tr>
     {assign var=i value=$i+1}
{/section}
8. strip
用途:将位于{strip}{/strip}内部html标签外的所有空格和回车清除干净,并以html标签开头和结尾
用法:
{strip}
<table border=0>
<tr>
<td>
<A HREF="{$url}">
<font color="red">This is a test</font>
</A>
</td>
</tr>
</table>
{/strip}
上述输出为:
<table border=0><tr><td><A HREF="http://my.domain.com"><font color="red">This is a test</font></A></td></tr></table>
9.for

{section name=total loop=100}
{$smarty.section.total.index+1} //当前的索引
{$smarty.section.total.iteration} //用于显示循环的次数
{/section}
{assign var=i value=0}
{section name=total loop=100}
{assign var=i value=$i+1} {$i} //使用assign的方式赋值
{/section}

四. 程序员需要注意的地方
1. 常量
SMARTY_DIR:SMARTY_DIR常量用于定位smarty类文件的完整系统路径,必须以斜杠结束,也可以不定义,smarty模板会自动创建合适的值。
2. 类属性
$template_dir: 模板目录,也就是各html文件放置目录,默认为"./templates"
$compile_dir: 编译后的模板目录,经过smarty解析后的html文件放置目录,默认为"./templates_c"
$config_dir: 模板配置文件目录,默认为"./configs"
$plugins_dir: 插件目录,默认为SMARTY_DIR 。 "plugins"
$cache_dir: 存放模板缓存的目录,默认为"./cache"
$debugging: 可以启动调试控制台,默认为false,很有用啊!!!
$debug_tpl: 定义用于调试控制台的模板文件名字,默认为SMARTY_DIR . "libs/debug.tpl"
$global_assign: 用于定义全局变量,例如:
php里:$this->tpl->global_assign = array('my_global_1' => .....);
在template里:{$smarty.my_global_1.***}
$compile_check: 自动编译模板,默认设置为true,投入产品后为性能起见,可以设置为false。
$force_compile: 强迫每次调用时重新编译模板,默认为false,不受$compile_check的限制,一旦设置为true后会强迫重新编译。
$caching: 是否缓存模板输出,默认为false,有利于增强性能。
$caching_lifetime: 缓存生存时间,只在$caching为true时有效,-1表示永远有效,0表示永远需要重新生成。单位是秒。
注意:$compile_check、$force_compile、$caching三者的关系如下:
A. 如果设置了$compile_check,如果任何模板文件或配置文件更新,都会重新编译,缓存也会重新生成;
B. 如果设置了$force_compile,则$compile_check不起作用,而缓存也总会重新生成;
C. 如果没有设置$caching,则没有缓存,性能受一定影响。
五. smarty的method
1. assign: 对模板使用到的php变量进行赋值
2. assign_by_ref: 也是赋值,不过是引用赋值
3. clear_all_assign: 清除所有赋值
4. clear_all_cache: 清除所有缓存,参数可以指定阈值时间
5. clear_assign: 清除某个赋值,可以指定单个变量名或者数组
6. clear_cache: 清除某个template的缓存,需要指定template的名称
7. clear_config: 清除所有配置变量,如果指定则清除特定配置变量
8. config_load: 加载某配置文件并将数据输出到模板
9. display: 显示某个模板
10.fetch: 捕获某个模板的输出,与display不同的是,模板输出内容并不会直接显示出来(有什么用呢???)
11.get_config_vars: 获取所有配置变量的值,也可以指定某个具体的变量名
12.get_template_vars: 获取所有模板变量的值,也可以指定某个具体的变量名
13.is_cached: 判断某模板的缓存是否存在,只有在$caching设置为true时才有效
14.template_exists: 判断某模板是否存在
六.使用php代码段
<{php}>
$a = '123';
$this->assign("a", $a);
echo "hello world".$a;
<{/php}>

<{$a}>
七、php 标签 访问 smarty 模版变量
<{assign var="a" value="123"}>
<{php}>
var_dump($this->_tpl_vars['a']);
<{/php}>
<{$a}>

{$detail|@json_encode nofilter}

http://www.smarty.net/docs/zh_CN/
http://www.smarty.net/docsv2/en/
http://www.cppblog.com/amazon/archive/2011/11/21/160638.html
http://www.smarty.net/
http://www.php100.com/manual/smarty/

smarty模版手册相关推荐

  1. smarty mysql demo_PHP Smarty模版简单使用方法

    本文实例讲述了PHP Smarty模版简单使用方法.分享给大家供大家参考,具体如下: Index.php: require('../libs/Smarty.class.php'); $smarty = ...

  2. Smarty中文手册,Smarty教程,Smarty模板的入门教材

    Smarty中文手册,Smarty教程,Smarty模板的入门教材 首先,这份Smarty中文手册的翻译工作是由喜悦国际村村民自发组织的,不代表任何人的意见和观点.对他们的无私奉献精神,我们表示感谢, ...

  3. php用smarty模板语法,Smarty模版设计基本语法

    模版中的注释: {* --*}         //可以包括一行或多行,且注释内容不会在浏览页面源代码中查看到 由PHP分配的模版变量用$开始,可包含字母数字下划线. 在模版中访问关联数组有两种方式: ...

  4. 让vscode编辑器支持smarty模版的TPL文件

    如何让vscode支持 php的 smarty模版, 1.安装插件 该插件可以是的tpl格式的文件以html的方式显示,但是我在使用中发现安装此插件后电脑的cup会飙到很高,一会就会把vscode跑蹦 ...

  5. smarty模版中使用图片的路径问题

    http://www.speedphp.com/bbs/thread-85-1-1.html 说show.htm在运行的时候其实是根tpl同级目录的 1. 在index.php中: define(&q ...

  6. php smarty 模版引擎,php模板引擎Smarty入门 - 小俊学习网

    如果要实现前端模板和后台逻辑业务处理相分离,MVC的思想开发网站的话,可使用模板引擎来完成.来学习php模板引擎Smarty,它分开了逻辑程序和外在的内容,提供了一种易于管理的方法. 1. 什么是模板 ...

  7. smarty缓存文件里是php,php-smarty模版引擎中的缓存应用

    php-smarty模版引擎中的缓存应用 同学们在学习的时候一定要保持足够耐心,才能把知识学好.以下百分网小编整理的php smarty模版引擎中的缓存应用实例代码的介绍,希望对大家有所帮助,更多信息 ...

  8. 二级分类 php 两张表,PHP_php smarty 二级分类代码和模版循环例子,二级分类的数据表结构如下: - phpStudy...

    php smarty 二级分类代码和模版循环例子 二级分类的数据表结构如下: PHP代码如下 复制代码 代码如下: /** @ 文章分类 含二级分类 @ param int $rootnum -- 一 ...

  9. PHP的Smarty

    原理: 把模板文件编译成php文件,然后每次都去读取下模板的修改时间,没有修改就不编译.然后include这个"编译"后的PHP文件. 所谓编译也就是模板用正则替换成含PHP代码的 ...

  10. 菜鸟学PHP之Smarty入门(组图)

    最近做个网址导航站,里面用到了Smarty,因为自己没用过PHP,所以找了些资料,这个感觉还不错,分享一下.http://www.5i321.com/ 刚开始接触模版引擎的 PHP 设计师,听到 Sm ...

最新文章

  1. androidstudio集成ijkplayer教程
  2. 下载到FPGA内的文件格式
  3. Python异步爬取知乎热榜
  4. 生成静态页面的五种方案(转)
  5. macos安装vscode_VS Code 代码编辑器入门指南:核心组件与概念
  6. Linux能ping主机,但ping不了网关以及外网,显示包全丢失解决方案
  7. jquery 打开服务器文件管理,javascript - 前端js如何封装一个方法或者是jQuery的插件实现点击一个按钮打开本地文件管理系统,进行上传文件...
  8. ubuntu 下安装配置LAMP
  9. 此计算机缺少或多个网络协议,Win10无法上网提示此计算机缺少一个或多个网络协议的四种解决方法...
  10. 关于计算机优点缺点的英语作文,跪求一篇英语作文 题目:论计算机的优缺点...
  11. 折线图_Line plot - 折线图
  12. 算法解读:基本的算法
  13. java集合大家族之Map
  14. 计算机感染病毒后 一定不能清除的措施是,货物周转量比上年同期下降最多的是()。...
  15. web前端开发的6个福利网站
  16. [渝粤教育] 江西财经大学 中国会计准则(全英文) 参考 资料
  17. PHP微信公众号开发——群发消息
  18. A novel hybrid intrusion detection method integrating anomalydetection with misuse detection
  19. 《关键对话,如何高效能沟通》读书笔记(上)
  20. 【算法】机器人走迷宫(适用于走迷宫、最短路径算法)-20200412

热门文章

  1. A Style-Aware Content Loss for Real-time HD Style Transfer(一个风格转换的风格感知损失)CVPR2018
  2. cad刷新快捷键_CAD快捷键命令
  3. 分享:绘图不可不知的CAD经典技巧
  4. 航空系统c语言课程设计报告,c语言课程设计报告_航空订票系统西安郵電學院.doc...
  5. 澳门智能公交调度系统客户端GUI设计
  6. 西宁公交调度员招聘计算机题库,调度员考试题库.doc
  7. 达州2022年9大科技计划项目申报方向、周期、要求汇编大全
  8. Linux-Ubuntu安装QQ 微信 TIM 百度网盘
  9. 利用project编制进度计划
  10. FreeRTOS基本教程零:STM32 FReeRTOS 移植流程