smarty内建函数讲解

来源:互联网 发布:ubuntu 升级pip 失败 编辑:程序博客网 时间:2024/05/18 00:52

简单介绍下smarty内建函数

capture
capture函数的作用是收集模板输出的数据到一 个变量里,而不是把它们输出到页面.例如任何在 {capture name=”foo”}和{/capture}之间的数据都被收到了由函数的名称属性指定的变量{$foo}里,或者 {$smarty.capture.foo}里。如果函数没有名字属性,将使用”default”.每个{capture}都必须对应 {/capture},也不能嵌套使用capture函数。

config_load
引用配置文件
file是必须的,说明要包含进来的配置文件名称,section说明要加载的部分的名称,scope被处理的变量的作用域.必须是local,parent或者global.
local的意思是变量将在本模板里被加载.
parent的意思是变量将在本模板和上级模板被加载.
global的意思是变量将应用到所有的模板.默认为local。变量是否在上级模板可视,默认为no。如果scope属性已经有了,这个值将被忽略.

foreach,foreachelse
foreach循环是选择性的section循环.用于遍历关联数组.foreach的语法比section简单的多,但是作为一个折中它只能用于简单数组.
foreach 必须的参数是from和item. from变量表示需要循环的数组的名称,item表示当前元素的变量名,key表示当前关键字的变量名,name表示访问foreach属性的 foreach循环名。循环可以互相嵌套,被嵌套的循环之间的名字必须是独立的.foreachelse 在from变量没有值的时候被执行

include
用来引用其他的模板。
file属性是必须的用来表示所引用模板的名字,assign表示include文件将要分配的输出的变量。你可以自行用属性名=”属性值”的方式定义任意个局部变量。

include_php
用来在模板中引入php脚本。file是必须的用来表示php脚本的路径,once确定如果在模板中引用了php脚本多次,是否只装载一次。默认为true。

insert
用 来包含php脚本中的函数,name是必须的,表示所插入的脚本的名称,注意如果名称是name,则包含的函数则是insert_name(),所以所有 要插入的函数要有前缀insert_ 。如果用了assign属性,则insert的输出将会分配给模板变量而不会显示。script表示要引用的脚本路径。这个程序产生的内容将不会被缓存, 在每次调用该页时重新执行,适用于广告,投票,查询结果等互动的地方。

smarty中往insert中传参数的方法:
smarty里insert方法传参数的方法介绍如下:
smarty模板:
{insert name="getPara" p1="php" p2="zixue"}

php代码:
function insert_getPara($arr)
{
return $arr["p1"]." " .$arr["p2"];
}

将输出:php zixue

用insert方法的时候,代码里的函数名前面一定要有"insert_" 否则会出错,当然除了你改了模板规则.
其中p1,p2,是要传的两个参数名,可以有多个,任意的,只要里外对应就行.$arr表示数组也是随便写的.

if,elseif,else
if语句和和 条件同php差不多,但每个词之间必须用空格分割开。也有一些新的条件语句,列举如下:eq相等,ne、neq不相等,gt大于,lt小于,gte、ge 大于等于,lte、le 小于等于,not非,mod求模。is [not] div by是否能被某数整除,is [not]even是否为偶数,$a is [not] even by $b即($a / $b) % 2 == 0,is [not] odd是否为奇,$a is not odd by $b即($a / $b) % 2 != 0

php
php标记可以让模板中能直接使用php语言。

section,sectionelse
section 用来循环显示数组的数据,name和loop是必须的参数。name表示嵌套名. section 可以嵌套使用,但是名字必须各不相同。loop表示循环的次数. sectionelse在loop参数为空的输出。start用来规定循环开始的指针,如果值为负则从数组尾部计算开始的指针,默认为0.step表示循 环的步数,为负则反向循环,默认为1.max设定循环的最大步数.show决定是否显示section.
section也有自己的变量处理section属性,用{$smarty.section.sectionname.varname} 来显示.

index
index用来显示当前循环的指针,从0开始.

index_prev
用来显示前一次循环的指针,从-1开始

index_next
用来显示后一次循环的指针.

iteration
显示当前循环的次数,从1开始.

first
如果当前循环为第一个循环,则值为true.

last
如果当前循环为最后一个循环,则值为true.

rownum
同iteration.

loop
显示最后一次循环的指针,可以用在section中间的任何地方,也可以用在section之后.

show
show决定是否显示section.

total
显示总共循环的次数,可以用在section中间的任何地方,也可以用在section之后.

strip
去掉多余的空格

capture 捕获模板输出的数据并将其存储到一个变量里,而不是把它们输出到页面

config_load 用于从配置文件中加载变量

foreach,foreachelse 除 section 之外处理循环的另一种方案

include 用于在当前模板中包含其它模板。当前模板中的变量在被包含的模板中可用

include_php 用于在模板中包含 php 脚本

insert 类似于 inluce 函数,不同之处是 insert 所包含的内容不会被缓存,每次调用该模板都会重新执行该函数

if,elseif,else 流程控制

ldelim,rdelim 用于输出分隔符,也就是大括号 "{" 和 "}"。模板引擎总是尝试解释大括号内的内容,因此如果需要输出大括号,请使用此方法

literal Literal 标签区域内的数据将被当作文本处理,此时模板将忽略其内部的所有字符信息。该特性用于显示有可能包含大括号等字符信息的 javascript 脚本

php php 标签允许在模板中直接嵌入 php 脚本

section,sectionelse 用于遍历数组中的数据。 section 标签必须成对出现. 必须设置 name 和 loop 属性,可以嵌套但必须保证嵌套的 name 唯一

strip 在输出前去除任何位于 {strip}{/strip} 标记中数据的首尾空格和回车。这样可以保证模板容易理解且不用担心多余的空格导致问题

原创粉丝点击