{*

{extends file='blockparent.tpl'}

*}

{*必须放在模板的第一行,如果要用子模板来扩展父模板,那么它只能有{block}的区域任何其他模板的内容将被忽略*}

{config_load file='config.conf'}{*载入配置文件*}

<html>

<head>

<meta charset='utf-8' />

<style type="text/css">

.nav{

margin-left:40px;

}

</style>

<!--访问普通变量-->

<title>{$title}</title>

</head>

<body>

<div>

<!--smarty注释-->

{*访问索引数组*}<span>访问索引数组:</span>

{$arr1[0]}

</div>

<div>

{*访问关联数组*}<span>访问关联数组:</span>

{$arr2.name}

</div>

<div>

<span>访问二维数组:</span>

{$arr3.world.china}

</div>

<div>

<span>访问配置文件变量:</span>

{#webname#}

</div>

<div>

<span>保留变量:</span>

<div class="nav">

<!--<span>POST</span>{* $smarty.post.page *}相当于$_POST['page'],GET类似-->

{*

$smarty.server.SERVER_NAME;相当于$_SERVER['SERVER_NAME']

*}

<span>SERVER:</span>

{$smarty.server.SERVER_NAME}

{*

类似的操作有env,session,requirest等

*}

</div>

<div>

<span>变量修饰器</span>

<div class="nav">


<span>capitalize:</span><br>{*格式化单词*}

<span class='nav'>{$str|capitalize}{*默认*}</span><br>

<span class='nav'>

{$str|capitalize:true}</span><br>{*带数字的开头是否大写,第二个参数,首字母后面的是不是小写*}

<span class='nav'>

{$str|capitalize:true:true}{*多个参数用冒号隔开*}</span>

<br>


<span>cat:</span><br>{*字符串连接函数*}

<span class='nav'>

{$str1|cat:'huge!'}

</span><br>


<span>count_characters:</span><br>{*计算字符数*}

<span class='nav'>

{$str|count_characters}

</span><br>

<span class='nav'>

{$str|count_characters:true}{*包含空格*}

</span><br>

{*

类似函数有,count_paragraphs:计算段落数,以换行符为标识

count_sentences:计算变量有多少个句子。每个句子必须以点号、问号或者感叹号结尾

count_words:计算变量内容有多少个单词

*}

<span>count_paragraphs:</span>

<div class='nav'>

{$str2}<br>

{$str2|count_paragraphs}

</div>


<span>date_format:</span><br>{*格式化日期的显示*}

<span class='nav'>

{$smarty.now|date_format:'%Y-%m-%d %l:%M:%S %p'}{*12小时制*}

{*%T等价于%H:%M:%S,24小时制*}

{*%p:只显示AM或PM;%r:等价于%l:%M:%S %p*}

</span><br>

{*其他变量修饰器:

default:设置默认值,当变量未定义或为空时,启用,需要传入默认值

escap:可用于将变量编码成html,url,单引号,16进制,16进制实体,javascript和电子邮件,默认是html

unescap:escap的解码函数

indent:代码缩进,默认是4个空格,可以自行设置数目和类型,但页面显示无效果,只支持代码缩进

lower:将字符串转换为小写

upper:将变量转换为大写字母

nl2br:将变量值中'\n'转换为<br>

regex_replace:用正则表达式搜索和替换变量值,参数分别是正则表和要替换的字符达式

replace:对变量进行简单的搜索和替换,同上,只是第一个参数直接是字符串

spacify:会在变量的字符串中插入空格,可以设置插入字符的类型

string_format:格式化字符串,如浮点数,指定哪种格式,springf()

strip:转换连续空格,回车和tab到单个空格或是指定的字符串

strip_tag:去除标记等包含在<和>中间的字符,参数bool值,指定是否将标签转换为空格

from_charset:将变量值转换为当前的字符集

to_charset:可将变量值由当前的内置字符集转换到指定的字符集

truncate:截取字符串到指定的长度,默认是80,截取后字符的长度是截取规定的长度加上第二个参数的字符长度,参数1,长度,默认80,参数2,替代显示字符,默认...,参数3,是否按单词截取,默认true,参数4,当字符截取度刚好等于字符本身的长度时,是否截取,默认true

wordwrap:限制一行字符的长度(自动换行)默认是80,参数1,行长度,参数2,换行符,默认'\n',参数3,设置按单词换行(false,默认),还是按字符换行(true)

*}

</div>

<div>

{*多个修饰器用|隔开,按从左到右,依次作用于变量*}

<span>复合变量修饰器</span><br>

<div class='nav'>

<span>upper,truncate:</span><br>

{$str1|truncate:10|upper}

</div>

</div>

<div>

<span>内置函数:</span>

<div class="nav">

<span>appand</span>{*在运行时为数组变量增加或创建值*}<br>

<span class='nav'>

{append var='arr' value='元素1' index='first'}

The first name is {$arr.first}

</span><br>

<span>assign</span><br>{*在模板运行时,给变量赋值*}

<span class='nav'>

{assign var='name' value='huge'}

The Name is {$name}

</span><br>

<span>block:</span><br>

{*

可以再模板上定义一块区域,以进行模板继承,参数1,模板区域名称;参数2,append:区域代码将附加到父母版{block}内容之后,参数3,prepend:之前,hide在没有该名称区域时,忽略区域内容,nochache:关闭缓冲,可以通过$smarty.block.parent和$smarty.block.child来获取父元素和子元素

*}

<div class='nav'>

{literal}会重写当前的文档流

{extends file='blockparent.tpl'}

{block name='pblock'}childblock{/block}{*直接覆盖父元素*}

{block name='pblock' append}appendchildblock{/block}{*置于父元素后面,prepend用法类似*}

{block name='pblock' }{$smarty.block.parent}{/block}

{*获取父元素中的全部内容,包括不在block中的内容,$smarty.block.child*}

{/literal}

{*literal:将标签内的内容原样输出*}

</div>

<span>call:</span><br>

{*

可以调用一个通过{function}标签定义的模板函数,参数1,name,函数名;参数2,

*}

{function name='myfun'}

this is a function标签

{/function}

<span class='nav'>

{call name='myfun'}

</span>

<br>

<span>capture:</span><br>

<span class='nav'>

{capture name='mycap'}This is a capture{/capture}

{$smarty.capture.mycap}

</span><br>

<span>for:</span><br>

<span class='nav'>

{for $i=20 to 10 max=3}{*简单的for循环,max,可选,设置最大循环次数*}

item{$i}&nbsp;

{forelse}没有循环时,显示的内容。

{/for}

</span><br>

<span>if:</span><br>

<span class='nav'>

{if $myname eq 'huge'}

welcome huge!

{elseif $myname=='萍儿'}

welcome 学姐

{else}

对不起,不为外星人提供服务!

{/if}

</span><br>

<span>include:</span><br>

<div class="nav">

{include file='include.tpl' title='名单'}

</div>

{*

{ldelim}:左定界符

{rdelim}:右定界符

这样直接在浏览器输出这两个定界符,不进行解析

*}

<span>nocache:</span><br>{*关闭局部缓冲*}

{nocache}

<span class='nav'>

{$smarty.now|date_format:'%T'}

</span>

{/nocache}<br>

<span>section:</span><br>

<span class='nav'>

{section name='sc' loop=$arr1 start=0 step=1 max=3 show=true}

{$arr1[sc]}

{sectionelse}

控数组

{/section}

</span><br>

<span>strip:</span><br>{*过滤多余空格和回车,使页面内容在一行显示*}

<span class='nav'>

{strip}

<table border='0'>

<tr>

 <td>

  <a href="#">

   <font color="red">This is a test</font>

  </a>

 </td>

</tr>

</table>

{/strip}

</span>

<span>while:</span><br>

<span class='nav'>

{while $len>1}

item{$len--}&nbsp;

{/while}

</span>

</div>

</div>

</div>

<div>

<span>自定义函数</span><br>

<div class="nav">

<span>counter:</span>{*计数器*}

<div class="nav">

{counter name='cal' start=0 skip=2 assign='abc'}

{counter}&nbsp;{counter}&nbsp;{$abc}

</div>

<span>cycle:</span>

{*

交替循环一系列值

name:交替循环的名称

values:交替遍历的值,可以使逗号隔开的字符串或数组

print:是否显示,默认true

advance:是否递进到下一个值

delimiter:values属性使用的限定符

assign:赋值的变量名

reset:交替循环将重置回到最前面的值,而不是递进

*}

{for $i=0 to 5}

<div style="background-color:{cycle values='red,green,blue,yellow'}">第{$i}行</div>

{/for}

<span>eval:</span>{*var 需要执行的变量或字符串,assign分配给某个变量*}

{eval var=$str1}<br>

<span>fetch:</span>{*抓取本地换外网上的网页*}

<div class="nav">

{*

{fetch file='http://www.baidu.com/'}

*}

</div>

<span>html_checkboxes:</span>

<div class="nav">

{html_checkboxes name='cbx' options=$arr4 selected=1001 separator='<br>'}

</div>

{*类似的标签还有

html_p_w_picpath:file:路径,height,width:显示高度和宽度,alt,href:链接地址,如果设置会在外围加上a标签,path_prefix,使用该标签在不开启缓冲的情况下,会降低性能

html_options:values,数组;output:下拉显示的数组,selected:选中项;name:select组的名称;options:键值对数组,用于下拉框

html_radios:同html_checkboxes

html_date,html_time:显示日期、时间,参数比较多

html_table:用数组的形式创建一个表格

mailto:创建一个mailto链接

math:在模板中进行一些数学运算

text_format:格式化文本的块函数

*}

<span>html_date:</span>

<div class="nav">

{html_select_date prefix='日期'  start_year='-5' end_year='+1' month_format='%m' field_order='YMD'}

</div>

<span>html_time:</span>

<div class="nav">

{html_select_time}

</div>

<span>html_table:</span>

<div class="nav">

{html_table loop=$arr5 cols='列1,列2,列3' table_attr='border="0"' tr_attr=$tr inner=rows hdir=left caption='表头'}

</div>

</div>

</div>

<div>

<span>注册类</span><br>

<div class="nav">

{myclass::$property}

</div>

</div>

<div>

<span>注册函数</span><br>

<div class="nav">

{my_fun param=huge}

</div>

</div>

<div>

<span>注册块函数</span><br>

<div class="nav">

{mybk background-color=yellow}

这是一个块函数

{/mybk}

</div>

</div>

<div>

<span>自定义函数</span><br>

<div class="nav">

{myfuninfo name=huge}

</div>

</div>

</div>

</html>

{*

{debug}:显示数据页面中各个已赋值变量的名称和值

*}

目录结构:

smarty前端常用标签_smarty