smart模板页⾯中写php代码,Smarty模板语法详解
本⽂实例讲述了Smarty模板语法。分享给⼤家供⼤家参考,具体如下:
所有模版标签⽤分隔符包围,默认为“{”和“}”。
模板注释
模板注释被星号包围,两边星号被定界符“{ }”包围,如 { smarty * }
smarty注释不会在模板⽂件的最后输出中出现,这与不同(译注:html注释在页⾯源码中可见,⽽smarty注释则不能)。
如下简单代码⽚{smarty}在源码中不可见,⽽源码可见。
smarty
{*smarty*}
smarty
变量初步
模板变量⽤美元符号开始,可以包含数字、字母和下划线,这php很像。(注意:配置⽂件变量是⼀个不⽤美元符号开始,可以包含数字、字母和下划线,这php很像。(注意:配置⽂件变量是⼀个不⽤美元符号,⽽是⽤#号包围着变量(#hashmarks#),或者是⼀个
$fig形式的变量。)
这⾥config不做说明,下⾯是变量⽰例:
反邪教心得体会{$a+$b} //最简单的变量处理⽅法
下载机{$a={$b}+1} //标签嵌套标签
{$array[$a]} //变量做数组索引
{$assign var=fun value=$a+$b} //变量赋值
{$fun="{a}"} //引号套⽤标签
{$assign var=fun value=[1,2,3]}
{$assign var=fun value=[1,2,[3,4]]}
{$assign var=fun value=[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函数返回值的情形中⾮常实⽤。
{function var="test $foo test"} // 识别 $foo
{func var="test $foo_bar test"} // 识别 $foo_bar
{func var="test `$foo[0]` test"} // 识别 $foo[0]
{func var="test `$foo[bar]` test"} // 识别 $foo[bar]
{func var="test $foo.bar test"} // 识别 $foo (⽆法识别 $foo.bar)
{func var="test `$foo.bar` test"} // 识别 $foo.bar
{func var="test `$foo.bar` test"|escape} //调节器在引号外
{func var="test {$foo|escape} test"} // 调节器在引号内
{func var="test {time()} test"} // PHP 函数识别
{func var="test {counter} test"} //标签识别
函数
每⼀个smarty标签输出⼀个变量或者调⽤某种函数。在定界符内函数(⼀般定界符‘{}'包住)和其属性(同样在定界符内)将被处理和输出。例如: {function(函数名) attr1(变量名)=”val”(变量值) attr2=”val”}.
科幻作文400字{config_load file="f"}
{include file="header.tpl"}
{if $highlight_name}
Welcome, {$name}!
{el}
Welcome, {$name}!
{/if}
{include file="footer.tpl"}
1、在模板⾥⽆论是内置函数还是⾃定义函数都有相同的语法。
2、内置函数将在smarty内部⼯作,例如{if}、{ction}和{strip},不能修改他们。
3、⾃定义函数通过插件机制起作⽤,它们是附加函数。只要你喜欢,可以随意修改,你也可以⾃⾏添加。例如{html_options}和
二十一世纪教育资源网
{html_lect_date}。
属性
⼤多数函数都带有⾃⼰的属性以便于明确说明或者修改他们的⾏为,smarty函数的属性很像HTML中的属性。静态数值不需要加引号,但是字符串建议使⽤引号。可以使⽤普通smarty变量,也可以使⽤带调节器的变量作为属性值,它们也不⽤加引号。你甚⾄可以使⽤php函数返回值和复杂表达式作为属性值。
Math
数学运算可以直接作⽤到变量值。素养教育
{$foo+1}
{$foo*$bar}
{$foo|truncate:"`$fooTruncCount/$barTruncFactor-1`"}
{assign var="foo" value="`$foo+$bar`"}
忽略smarty语法绝句三
忽略Smarty对某些语句段的解析很有必要。⼀种典型的情况是嵌⼊到模板中的javascript或Css代码。原因在于这些语⾔使⽤与Smarty默认定界符‘{'和‘}'⼀样的符号。
⽅法:⼀个避免出现这种情况的好习惯是把你的javascript/css代码分离出来保存成⼀个独⽴⽂件,再⽤html⽅法链接到模版中。这样做也有利于浏览器缓存脚本。如果你想把Smarty变量、⽅法嵌⼊到javascript/css,请看下⾯的运⽤。
中央空调家用优缺点在Smarty模版,如果‘{'和‘}'⼤括号⾥包含有空格那么整个{}内容会被忽略,你可以设置Smarty类变量$auto_literal=fal来取消这种规则。
// the following braces are ignored by Smarty 以下⼤括号的内容会被Smarty忽略
// since they are surrounded by whitespace 因为它们⾥⾯有空格
function foobar {
alert('foobar!');
}
// this one will need literal escapement 下⾯的内容会保持原义输出
{literal}
function bazzy {alert('foobar!');}
{/literal}
{literal}…{/literal}块被⽤来忽略模版语法的解析,你也可以⽤{idelim},{rdelim}标签或{smarty.Idelim}、{smarty.Idelim}、
{smarty.rdelim}变量来忽略个别⼤括号(译注:后⾯两种⽅法主要⽤来在模版中输出左右⼤括号)。
希望本⽂所述对⼤家基于smarty模板的PHP程序设计有所帮助。