smart工具包括哪些元素(Smarty模板语法详解)
smart工具包括哪些元素
Smarty模板语法详解本文实例讲述了Smarty模板语法。分享给大家供大家参考,具体如下:
所有模版标签用分隔符包围,默认为“{”和“}”。
模板注释
模板注释被星号包围,两边星号被定界符“{ }”包围,如 { smarty * }
smarty注释不会在模板文件的最后输出中出现,这与不同(译注:html注释在页面源码中可见,而smarty注释则不能)。
如下简单代码片{smarty}在源码中不可见,而源码可见。
|
< html > < head > < tltle >smarty</ tltle > < body > {*smarty*} smarty <!--smarty--> </ body > </ head > </ html > |
变量初步
模板变量用美元符号开始,可以包含数字、字母和下划线,这php很像。(注意:配置文件变量是一个不用美元符号开始,可以包含数字、字母和下划线,这php很像。(注意:配置文件变量是一个不用美元符号,而是用#号包围着变量(#hashmarks#),或者是一个$smarty.config形式的变量。)
这里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”}.
|
{config_load file= "colors.conf" } { include file= "header.tpl" } { if $highlight_name } Welcome, <font color= "{#fontColor#}" >{ $name }!</font> { else } Welcome, { $name }! {/ if } { include file= "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`" } {assign var = "foo" value= "`$foo+$bar`" } |
忽略smarty语法
忽略Smarty对某些语句段的解析很有必要。一种典型的情况是嵌入到模板中的javascript或Css代码。原因在于这些语言使用与Smarty默认定界符‘{'和‘}'一样的符号。
方法:一个避免出现这种情况的好习惯是把你的javascript/css代码分离出来保存成一个独立文件,再用html方法链接到模版中。这样做也有利于浏览器缓存脚本。如果你想把Smarty变量、方法嵌入到javascript/css,请看下面的运用。
在Smarty模版,如果‘{'和‘}'大括号里包含有空格那么整个{}内容会被忽略,你可以设置Smarty类变量$auto_literal=false来取消这种规则。
|
<script> // 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} </script> |
{literal}…{/literal}
块被用来忽略模版语法的解析,你也可以用{idelim}
,{rdelim}
标签或{smarty.Idelim}
、{smarty.Idelim}
、{smarty.rdelim}
变量来忽略个别大括号(译注:后面两种方法主要用来在模版中输出左右大括号)。
希望本文所述对大家基于smarty模板的PHP程序设计有所帮助。
原文链接:https://blog.csdn.net/jingege0318/article/details/54142312
- vue弹窗模板(Vue登录页面的动态粒子背景插件实现)
- laravel 开发自定义组件(laravel框架模板之公共模板、继承、包含实现方法分析)
- sqlserver完全删除教程(sql server编写archive通用模板脚本实现自动分批删除数据)
- php关注公众号发送消息(php实现QQ小程序发送模板消息功能)
- 织梦cms指定栏目怎么取(织梦CMS后台模板列表按字母排序方法)
- 怎么调用dede自定义表单(DEDE实现转跳属性文档在模板上调用出转跳地址)
- django模板自定义(详解Django项目中模板标签及模板的继承与引用网站中快速布置广告)
- dede搜索模板代码(DEDE调用指定文章ID来调用特定文档)
- dedecms怎么加入模板(dedecms 列表页标题修改图文方法利于优化)
- dede模板如何修改(dede文章页面如何显示作者的头像默认只能显示作者用户名)
- dedecms怎么判断授权(DedeCms模板防盗以及安全设置的一些小技巧)
- 瀑布流模板怎么搞(3种方式实现瀑布流布局小结)
- dedecms模板如何修改日期(DEDECMS网站文章列表页更新点击次数的问题完美解决)
- dede织梦的后台如何调整和使用(dedecms织梦模板去掉文档内链自动连接关键词的下划线)
- phpstorm代码模板(phpStorm+XDebug+chrome 配置详解)
- dede织梦怎么在文章下面添加图片(dedecms织梦模板描述description长度限制修改方法)
- 老弄堂里的市井味道(老弄堂里的市井味道)
- 小米音乐可绑定QQ音乐, QQ音乐 真的会消失在小米的设备上吗(小米音乐可绑定QQ音乐)
- 小米Watch S1评测 或许能成为小米冲击高端可穿戴设备的里程碑(小米WatchS1评测或许能成为小米冲击高端可穿戴设备的里程碑)
- 手机QQ与小米路由器在一起 明天揭晓,敬请期待(手机QQ与小米路由器在一起)
- 小米音乐与 QQ 音乐合作,便捷迁移会员(小米音乐与QQ音乐合作)
- 小米推出米兔儿童电话手表奥特曼版,799 元,支持微信 QQ(小米推出米兔儿童电话手表奥特曼版)
热门推荐
- docker前端项目(Docker部署Nuxt.js项目的实现)
- pythonmatplotlib散点图怎么画(python使用matplotlib画柱状图、散点图)
- dedecms标签路径修改问题(解决织梦DEDE5.7 tags系列bug图解步骤)
- 怎么样查找linux的ssl证书(护卫神主机大师Linux添加绑定ssl证书图文教程)
- vue3.0 黑暗风格(Vue3.0 手写放大镜效果)
- mysql什么是慢查询(MySQL慢查询的坑)
- flex布局小技巧(详解flex实现左右布局中按钮溢出隐藏效果)
- pythonlogging模块教学(详解Python logging调用Logger.info方法的处理过程)
- dockerservice启动参数(docker.service启动报错的一次排查详解)
- tomcat运行警告(tomcat异常解决Invalid character found in the request target. The valid characters are defined in)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9