Smarty是一个php模板引擎,它分隔了逻辑程序和外在的内容,供给了一种易于办理的办法.
Smarty需求web服务器运转php4.0.6和以上版别.
smarty装置需求smarty库文件。能够去官方网站http://smarty.php.net下载。
网上讲了许多装置的教程,可是我都没有成功,所以直接把整个目录名改为smarty直接仿制到了网站地点的目录下,然后翻开
http://网站途径/smarty/demo/index.php,显现正常,大概算是装置成功了。
根本语法
一切的smarty标签都被加上了定界符.在smarty里,一切定界符以外的内容都是静态的,当smarty遇到了模板标签,将测验解说他们,然后再以恰当的办法输出.
默许状况下是 {和},但它们是可定制的.定制办法是:
$smarty->left_delimiter = '';
1.注释
模板注释被*号围住,例如 {* this is a comment *}
smarty注释将不被输出.它是模板内涵的注释.
2.变量
模板变量以$最初,能够包括数字,字母和下划线。
config_file变量是破例要用#变量名#的办法引证
3.函数
smarty标签输出一个变量或许调用某种函数.
在定界符内函数和其特点将被处置和输出.例如:
{funcname attr1="val" attr2="val"}.
funcname为函数的称号比方:include等,attr1,attr2为特点名,val为特点相应的值。
在模板里无论是内建函数仍是自界说函数都有一样的语法.
内建函数将在smarty内部作业,例如 {if}, {section} 和{strip}.他们不能被修正.
自界说函数经过插件机制起效果,它们是附加函数,能够随意修正,自行增加.
例如 {html_options} and {html_sel ect_date}
4.特点
静态数值不需求加引号,布尔值(真或假)也不需求引号,能够是true,on,yes或许false,off,no. 可是字符串破例.变量相同被用到了,它们也不能加引号.
5.在字符串中刺进变量
只能辨认数字,字母,下划线和[]的组合,若是为杂乱的办法需求用``将变量隔起来。比方{func var="test $foo.bar test"} 中只能辨认变量$foo,要辨认$foo.bar,需求写成{func var="test `$foo.bar` test"}的格局。
6.一些保存字的显现办法
在模板中若是要将smarty的一些保存字作为言语的内容显现出来,比方显现分隔符,默许为{}的办法是: {ldelim},{rdelim} 或许{$smarty.ldelim},{$smarty.rdelim} 或许能够把{}放在{literal} .. {/literal} 中心输出。
smarty的保存变量
{$smarty}保存变量能够被用于拜访一些特别的模板变量.
以下是悉数.
页面恳求变量
以下是拜访页面恳求变量比如get,post,cookies,server,enviroment和session变量的比如. 例如{$smarty.server.SERVER_NAME}取得服务器变量,{$smarty.env.PATH}取得体系环境变量path, {$smarty.request.username}取得get/post/cookies/server/env的复合变量。
{$smarty.now}变量用于拜访当时时刻戳.
能够用 date_format调理器格局化输出. 例如{$smarty.now|date_format:"%Y-%m-%d %H:%M:%S"}
{$smarty.const}
你能够直接拜访PHP常量. 例如{$smarty.const._MY_CONST_VAL}
{$smarty.capture}
能够经过 {capture}..{/capture}布局 截取的输出能够运用{$smarty} 变量拜访.
{$smarty.config}
{$smarty}变量 能够拜访现已加载的config变量.
例如 {$smarty.config.foo}就能够表明 {#foo#}.
{$smarty.section}, {$smarty.foreach}
{$smarty} 变量能够拜访'section'和'foreach'循环的特点.
{$smarty.template}
显现当时被处置的模板的姓名.
{$smarty.version}
显现smarty模板的版别
{$smarty.ldelim}
显现左分隔符
{$smarty.rdelim}
显现右分隔符
变量调理器
变量调理器用于变量,自界说函数和字符串.
能够运用'|'符号和调理器称号运用调理器.
变量调理器由赋予的参数值决议其行动.
参数由':'符号分隔.
若是你用变量调理器调理数组变量,成果是数组的每个值都被调理.若是你想要调理器调理整个数组,你有必要在调理器姓名前加上@符号.
例如: {$articleTitle|@count}(这将会在输出 $articleTitle 数组里的数目)
capitalize
将变量里的一切单词首字大写. 参数值boolean型决议带数字的词能否首字大写。默许不大写
count_characters
核算变量值里的字符数.参数值boolean型决议能否核算空格数。默许不核算空格
cat
将cat里的参数值连接到给定的变量后边.默许为空。
count_paragraphs
核算变量里的阶段数量
count_sentences
核算变量里句子的数量
count_words
核算变量里的词数
date_format
日期格局
榜首个参数操控日期格局.
若是传给date_format的数据是空的,将运用第二个参数作为默许时刻
%a - 星期几的简写
%A - 星期几的全写
%b - 月份的简写
%B - 月份的全写
%c - 日期时刻06/12/05 11:15:10
%C - 世纪时刻
%d - 一个月的第几号(从 01 到 31)
%D - 同 %m/%d/%y
%e - 一个月的第几号,号为奇数则前面加一空格 (从 1 到 31)
%g - 世纪
%G - 世纪 [0000,9999]
%h - 同%b
%H - 24小时办法的小时(从00到23)
%I - 12小时办法的小时(从01到 12)
%j - 一年中的第几天(从 001 到 366)
%k - 24小时办法的小时,奇数字前面加空格. (从 0 到 23)
%l - 12小时办法的小时,奇数字前面加空格.(range 1 to 12)
%m - 月份 (range 01 to 12)
%M - 分
%n - 换行符
%p - 显现早上仍是下午`am' 或 `pm'
%r - a.m. 或 p.m.办法的时刻
%R - 24小时办法的时刻
%S - 秒
%t - tab符号
%T - 同%H:%M:%S
%u - 用 [1,7],表明星期几
%U - 核算是该年的第几个星期,从该年的榜首个星期天开端核算
%V - 核算是该年的第几个星期, 从 01 到 53, 榜首个星期有必要至少有4天在这一年, 星期天作为这个星期的榜首天
%w - 用数字的办法表明是星期的第几天, 星期天 为 0
%W - 用数字的办法是该年的第几个星期,从该年的榜首个星期一开端核算
%x - 显现日期:月/日/年
%X - 显现时刻:小时:分钟:秒
%y - 不包括世纪的年份
%Y - 包括世纪的年份
%Z - 时区
%% - 输出%
其间有些有时不能正常输出。
default
默许
为空变量设置一个默许值.
当变量为空或许未分配的时分,将由给定的默许值替代输出.
escape
转码
参数值为html,htmlall,url,quotes,hex,hexentity,javascript。默许是html转码
indent
缩进
在每行缩进字符串,榜首个参数指定缩进多少个字符,默许是4个字符.第二个参数,指定缩进用啥字符替代。
lower
小写
This is used to lowercase a variable.
将变量字符串小写
nl2br
换行符交换成
regex_replace
正则交换
寻觅和交换正则表达式.有必要有两个参数,参数1是交换正则表达式. 参数2运用啥文本字串来交换
replace
交换
简略的查找和交换字符串有必要有两个参数,参数1是将被交换的字符串. 参数2是用来交换的文本
spacify
spacify是在字符串的每个字符之间刺进空格或许其他的字符串. 参数表明将在两个字符之间刺进的字符串,默许为一个空格。
string_format 字符串格局化
是一种格局化浮点数的办法.例如十进制数.运用sprintf语法格局化。参数是有必要的,规则运用的格局化办法。%d表明显现整数,%.2f表明截取两个浮点数。
strip 去掉(剩余空格)
交换一切重复的空格,换行和tab为单个或许指定的字符串. 若是有参数则是指定的字符串。
strip_tags 去掉一切html标签
truncate 截取
参数1,规则截取的字符数.默许是80个.
第二个参数指定在截取的那段字符串后加上啥字符.默许为...
第三个参数决议能否准确截取,默许状况下为false,则smarty不会切割单词。
upper 将变量改为大写
wordwrap 行宽束缚
榜首个参数指定阶段的宽度(也就是多少个字符一行,超越这个字符数换行).默许80.
第二个参数指定在束缚点运用啥字符(默许是换行符\n).
第三个参数决议能否准确截取字符,默许状况下是不准确截取,就是截取时不能分隔单词。
内建函数
内建函数不能私行修正。
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表明要引证的脚本途径。这个程序发生的内容将不会被缓存,在每次调用该页时从头履行,适用于广告,投票,查询成果等互动的当地。
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
去掉剩余的空格
惯例函数
assign
assign用来在履行模板时分配变量值.var,value是有必要的参数.var为要分配值的变量名,value为分配的值.
counter
counter用来输出一个计数. 能够用多个计数,可是姓名有必要各不一样.name表明计数器名,默许为default.start表明计数的初始值,默许为1.skip计数的距离,默许 为1.direction表明计数方向,up或down,默许为up.print表明能否打印该值,默许为true.assign界说模板变量,计数器的 输出将被分配到assign界说的变量中.
cycle
Cycle用来循环显现一组数值.name表明cycle名,values("值1","值2",...)表明循环显现的一组数值.print表明能否显 示.advance决议能否显现下一个数值. delimiter决议value的分隔符,默许为逗号. assign界说模板变量,cycle的输出将被分配到assign界说的变量中.
debug
debug能够显现一切分配了值的变量,可是不显现模板内容,output特点决议显现的格局html或javascript,默许是html.
ev al
ev al用来在变量里刺进变量。var是刺进的变量名,assign把输出分配给一个变量。
fetch
用来取得文件内容,并输出文件内容,能够取得本地文件,http文件和ftp文件,file是取得文件的途径, assign把输出分配给一个变量。
html_checkboxes
html_checkbox用来用给定的数据创立checkbox。name表明checkbox的称号,values表明checkbox的 值,output表明checkbox的显现,sel ected表明被选选项的值,options表明一组checkbox的值和显 示,separator表明切割每个checkbox的符号,labels表明给输出增加标签,默许为true。
html_image
html_image用来为一个图像创立html标签,若是height和width不分配值将会主动生成。file是图像的路 径,height,width,alt同html标签,basedir是图像相对途径开端的目录的途径,默许为服务器根目录。href界说图像的连接。
html_options
输出下拉列表,参数有name,values,output,sel ected,options。
html_radios
输出单选框,参数同复选框。
html_sel ect_date
prefix界说各个下拉列表姓名的前缀,默许为Date_。time决议运用的时刻,默许是当时时刻。start_year决议下拉列表开端的年份,可 以用年份表明,也能够用与当时年份的相对年数来表明。默许是当时年份。end_year决议下拉列表完毕的年份,能够用年份表明,也能够用与当时年份的相 对年数来表明。默许是当时年份。display_days决议能否显现日期。display_months决议能否显现月份。display_years 决议能否显现年份。month_format决议显现月份的格局,默许为%B。day_format决议显现日期的格局,默许为%02d。 day_value_format决议日期值的格局,默许为%d。month_value_format决议月份值的格局,默许为%m。 year_as_text决议能否将年份按文本格局输出。reverse_years决议能否反向输出各年份。field_array用来取得一组变量, 能够用name[Day],name[Month],name[Year]的办法从form取得取得的值。 day_size,month_size,year_size增加巨细标签。 all_extra,day_extra,month_extra,year_extra增加额定的特点到sel ect或input标签。 field_order决议年月日下拉列表的次序,默许为MDY。field_separator不一样下拉列表之间的分隔符,默许是\n。 year_empty,month_empty,day_empty是在各下拉列表榜首栏显现的内容。
html_sel ect_time
prefix界说各个下拉列表姓名的前缀,默许为Time_。time决议运用的时刻,默许是当时时刻。display_hours决议能否显现小时。 display_minutes决议能否显现分钟。display_seconds决议能否显现秒数。display_meridian 决议能否显现上午或下午,即显现am/pm。use_24_hours 决议能否24小时制。minute_interval 决议分钟之间的距离。second_interval 决议秒数之间的距离。field_array用来取得一组变量,能够用name[Hour],name[Minute],name[Second]的办法 从form取得取得的值。all_extra,hour_extra,minute_extra,second_extra ,meridian_extra增加额定的特点到sel ect或input标签。
html_table
loop界说用于循环的一组数据。cols决议列的数目,rows决议行的数目,若是其间一个为空,另一个有值,则依据元素个数和有值的特点来核算另一个 的值,两者的默许值为3。inner决议元素的罗列方向cols则列跟着列摆放,rows则行跟着行摆放,默许为cols。 table_attr,tr_attr,td_attr分别为table,tr,td增加标签,若是tr_attr,td_attr是数组,将会循环增加 标签。trailpad用来填充最终一行没有值的单元格,默许是 。hdir决议每行元素的摆放方向,从左到右right或从右到左left,默许为right。vdir决议每列的摆放方向,从上到下down或从下到上 up,默许为down。
math
进行数字运算操作。equation和var是有必要的。equation界说运算式,能够运用的运算符有+, -, /, *, abs, ceil, cos, exp, floor, log, log10, max, min, pi, pow, rand, round, sin, sqrt, srans and tan。var给运算变量赋值。format断定成果的格局。assign将输出赋给一个参数。
mailto
运用mailto函数能使网络蜘蛛很难获取你的email地址,可是能在网页上正常显现,由于他把email地址进行了加密处置。address是有必要 的,界说email地址。text是显现在页面上的文本内容,默许是email地址。encode是加密email地址的办法,能够是none,hex或 javascript,默许是none。若是要把邮件发给其他的邮箱,能够用cc抄送,email地址之间用,切割。bcc则为密件抄送。subject 是邮件主题。newsgroups是宣布内容的新闻组,新闻组之间用,离隔。extra增加附加标签。followupto意思不知。
textformat
textformat用来格局化文本,他会去掉空格和特别字符,和规则行宽和缩进。style规则当时的格局,indent规则缩进的位数。 indent_first规则榜首行的缩进。indent_char用来缩进的字符,默许是一个空格。wrap规则行宽,即一行的字符数,默许是80。 wrap_char规则每行的分隔符,默许是\n。wrap_cut决议能否切割单词。assign将输出分配给变量。
常量
SMARTY_DIR
是到smarty类目录的彻底途径,有必要以/完毕。若是没有界说,将会主动决议途径.
SMARTY_CORE_DIR
是到smarty类core文件目录的彻底途径,有必要以/完毕。若是没有界说,将会主动界说为smarty_dir途径下面的子目录.
变量
$template_dir
默许的模板目录名,默许为"./templates".
$compile_dir
默许的编译模板目录名,默许为"./templates_c"
$config_dir
默许的config文件目录名,默许为"./configs".
$plugins_dir
默许的插件目录名,默许为"plugins".
$debugging
debugging操控台。即一个显现变量的窗口.
$debug_tpl
debug窗口的模板
$debugging_ctrl
另一种操控debugging的办法。
$autoload_filters
对一切的模板运用过滤程序,这个变量是一个数组,其间关键词是过滤的类型,值是过滤的姓名。
$compile_check
每次php履行将能否检查模板的内容能否改动。
$caching
决议能否缓存文件履行生成的文件。
$cache_dir
默许的模板缓存目录名,默许为"./cache".
$cache_lifetime
缓存的模板的过期时刻,以秒核算. $caching值为-1则缓存的模板永不过期