Smarty模板语法详解
本文实例讲述了Smarty模板语法。分享给大家供大家参考,具体如下:
所有模版标签用分隔符包围,默认为“{”和“}”。
模板注释
模板注释被星号包围,两边星号被定界符“{}”包围,如{smarty*}
smarty注释不会在模板文件的最后输出中出现,这与不同(译注:html注释在页面源码中可见,而smarty注释则不能)。
如下简单代码片{smarty}在源码中不可见,而源码可见。
smarty {*smarty*} smarty
变量初步
模板变量用美元符号开始,可以包含数字、字母和下划线,这php很像。(注意:配置文件变量是一个不用美元符号开始,可以包含数字、字母和下划线,这php很像。(注意:配置文件变量是一个不用美元符号,而是用#号包围着变量(#hashmarks#),或者是一个$smarty.config形式的变量。)
这里config不做说明,下面是变量示例:
{$a+$b}//最简单的变量处理方法 {$a={$b}+1}//标签嵌套标签 {$array[$a]}//变量做数组索引 {$assignvar=funvalue=$a+$b}//变量赋值 {$fun="{a}"}//引号套用标签 {$assignvar=funvalue=[1,2,3]} {$assignvar=funvalue=[1,2,[3,4]]} {$assignvar=funvalue=[1=>'one',2=>'tow']}//数组定义 {$fun=stlen($a)} {fun=function($a,$b)}//用作函数参数 {$array.a=1} {$array.a.b.c($array[a][b][c])=1}//数组索引赋值 {$object->method1($x)->method2($y)}//对象链
双引号中插入变量
1、Smarty可以识别嵌入在双引号中的变量,只要此变量只包含数字、字母、下划线和中括号[]。
2、对于句号,数组和对象引用等的符号此变量必须用两个反引号`。
3、Smarty3增加了双引号对Smarty标签的支持。在需要包含调节器变量、插件、php函数返回值的情形中非常实用。
{functionvar="test$footest"}//识别$foo {funcvar="test$foo_bartest"}//识别$foo_bar {funcvar="test`$foo[0]`test"}//识别$foo[0] {funcvar="test`$foo[bar]`test"}//识别$foo[bar] {funcvar="test$foo.bartest"}//识别$foo(无法识别$foo.bar) {funcvar="test`$foo.bar`test"}//识别$foo.bar {funcvar="test`$foo.bar`test"|escape}//调节器在引号外 {funcvar="test{$foo|escape}test"}//调节器在引号内 {funcvar="test{time()}test"}//PHP函数识别 {funcvar="test{counter}test"}//标签识别
函数
每一个smarty标签输出一个变量或者调用某种函数。在定界符内函数(一般定界符‘{}'包住)和其属性(同样在定界符内)将被处理和输出。例如:{function(函数名)attr1(变量名)=”val”(变量值)attr2=”val”}.
{config_loadfile="colors.conf"} {includefile="header.tpl"} {if$highlight_name} Welcome,{$name}! {else} Welcome,{$name}! {/if} {includefile="footer.tpl"}
1、在模板里无论是内置函数还是自定义函数都有相同的语法。
2、内置函数将在smarty内部工作,例如{if}、{section}和{strip},不能修改他们。
3、自定义函数通过插件机制起作用,它们是附加函数。只要你喜欢,可以随意修改,你也可以自行添加。例如{html_options}和{html_select_date}。
属性
大多数函数都带有自己的属性以便于明确说明或者修改他们的行为,smarty函数的属性很像HTML中的属性。静态数值不需要加引号,但是字符串建议使用引号。可以使用普通smarty变量,也可以使用带调节器的变量作为属性值,它们也不用加引号。你甚至可以使用php函数返回值和复杂表达式作为属性值。
Math
数学运算可以直接作用到变量值。
{$foo+1} {$foo*$bar} {$foo|truncate:"`$fooTruncCount/$barTruncFactor-1`"} {assignvar="foo"value="`$foo+$bar`"}
忽略smarty语法
忽略Smarty对某些语句段的解析很有必要。一种典型的情况是嵌入到模板中的javascript或Css代码。原因在于这些语言使用与Smarty默认定界符‘{'和‘}'一样的符号。
方法:一个避免出现这种情况的好习惯是把你的javascript/css代码分离出来保存成一个独立文件,再用html方法链接到模版中。这样做也有利于浏览器缓存脚本。如果你想把Smarty变量、方法嵌入到javascript/css,请看下面的运用。
在Smarty模版,如果‘{'和‘}'大括号里包含有空格那么整个{}内容会被忽略,你可以设置Smarty类变量$auto_literal=false来取消这种规则。
{literal}…{/literal}块被用来忽略模版语法的解析,你也可以用{idelim},{rdelim}标签或{smarty.Idelim}、{smarty.Idelim}、{smarty.rdelim}变量来忽略个别大括号(译注:后面两种方法主要用来在模版中输出左右大括号)。
更多关于Smarty相关内容感兴趣的读者可查看本站专题:《smarty模板入门基础教程》、《PHP模板技术总结》、《PHP基于pdo操作数据库技巧总结》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于smarty模板的PHP程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。