1.{$var=...}php
这是{assign}函数的简写版,你能够直接赋值给模版,也能够为数组元素赋值。html
<{$a = 10}><!--赋值语句--> <{$a}><!--输出语句,输出结果为10-->
2.{appeng}前端
{append}用于在模板执行期间创建或追加模板变量数组。数组
3.{assign}session
{assign}用来在模板运行时为模板变量赋值。app
4.{block}函数
{block}用来定义一个命名的模板继承源区域。意思就是一个模板能够继承另一个模板。例如套用phpcms模板时,把头部文件header和尾部文件footer单写出来,每一个页面引入这两个页面就能够了。ui
5.{config_load}spa
{config_load}用来从配置文件中加载config变量(#variables#)到模版。 插件
6.{for}、{foreach}、{section}
{for}、{foreach}、{section}都是用来循环输出的。其中{section}已经被淘汰了,基本上不用了。
下面用foreach遍历出数组:
test.php
<?php session_start(); //引入配置文件 include("../init.inc.php");//init.inc.php里面已经造smarty对象了。 $attr = array("hello","world","ni","hao");//写一个数组 $smarty->assign("shuzu",$attr);//把数组注入smarty模板里面 $smarty->display("test.html");//调用模板文件来显示
test.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> </head> <body> <{foreach $shuzu as $v}><!--foreach循环遍历数组--> <{$v}><br /><!--输出数组里面的内容--> <{/foreach}> </body> </html>
输出结果:
循环中还存在下列目录
(1)<{$v@index }>包含当前数组的下标,开始时为0。
<body> <{foreach $shuzu as $v}><!--foreach循环遍历数组--> <{$v@index }><{$v}><br /><!--输出数组里面的内容--> <{/foreach}> </body>
输出结果:
(2){iteration}
iteration包含当前循环的迭代,老是以1开始,这点与index不一样,index是从0开始的。每迭代一次值自动加1。
<body> <{foreach $shuzu as $v}><!--foreach循环遍历数组--> <{$v@iteration}><{$v}><br /><!--输出数组里面的内容--> <{/foreach}> </body>
输出结果:
(3){@first}
当{foreach}循环第一个时first为真。这里咱们演示当第一次迭表明格头所在行。
<body> <{foreach $shuzu as $v}><!--foreach循环遍历数组--> <{$v@first}><{$v}><br /><!--输出数组里面的内容--> <{/foreach}> </body>
输出结果:若是输出的是第一条数据,返回波尔型数据的真,即1.
@first能够按照下面的方法使用
<body> <{foreach $shuzu as $v}><!--foreach循环遍历数组--> <{if $v@first}><!--判断是否是显示的第一条数据--> <span style="color:red"><{$v}></span><br /><!--若是是第一条数据,就显示为红色--> <{else}><!--若是不是第一条数据--> <{$v@first}><{$v}><br /><!--直接输出数组里面的内容--> <{/if}> <{/foreach}> </body>
输出结果只有第一条数据显示为红色。
(4){@last}
当{foreach}迭代到最后时last为真。这里咱们演示当迭代到最后时显示一条横线。用法和{@first}同样。
(5){@show}
show属性用在检测{foreach}循环是否无数据显示,show是个布尔值(true or false)。意思就是若是返回值是true,说明这个循环是有值的,若是返回值是flase,说明这个循环是没有值的。
(6){@total}
total包含{foreach}循环的总数(整数),能够用在{forach}里面或后面。
<body> <{foreach $shuzu as $v}><!--foreach循环遍历数组--> <{if $v@first}><!--判断是否是显示的第一条数据--> <span style="color:red"><{$v}></span><br /><!--若是是第一条数据,就显示为红色--> <{else}><!--若是不是第一条数据--> <{$v@first}><{$v}><br /><!--直接输出数组里面的内容--> <{/if}> <{$v@total}> <{/foreach}> </body>
显示结果:说明总共有4次循环。
7.{include}
{include}标签用于在当前模板中包含其它模板。当前模板中的任何有效变量在被包含模板中一样可用。
{include file='page_header.tpl'}
自定义函数
自定义函数均可以成为插件
1.{html_select_date}
自定义函数{html_select_date}用于建立日期下拉列表,它能够显示任意年月日。下述列表中没有说明的参数会在相应的年、月、日<select>标签中以名/值的键值对形式显示出来。
<body> <{html_select_date prefix='StartDate' start_year='-5' end_year='+1' display_days=false}> </body>
显示结果:
2.{textformat}
{textformat}用于格式化文本。该函数主要清理空格和特殊字符,对段落按单词边界换行和行缩进等段落格式化处理。
用户能够明确设置参数,或使用预处理风格。目前只有惟一可用风格"email"。
下面是从文件目录里面找变量调节器
变量调节器文件统一放在了D:\wamp\www\project\libs\plugins里面
1.modifiercompiler.upper.php文件是用来转大写的,下面是其代码。
function smarty_modifiercompiler_upper($params)//变量调节器的名字,()里面传一个参数。 { if (Smarty::$_MBSTRING) {//处理数据 return 'mb_strtoupper(' . $params[0] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')'; } // no MBString fallback return 'strtoupper(' . $params[0] . ')';//返回处理完的数据 }
2.能够根据默认的插件本身来写插件,本身的插件目录为D:\wamp\www\project\plugins
下面建一个改变字符串颜色的调节器,文件名为modifier.color.php,注意文件名的命名和调节器名字的写法。
<?php function smarty_modifier_color($str)//modifier是变量调节器的名字,color是变量调节器名称。()里面必须有一个参数,这个参数是拿来改变颜色的变量 { $str = "<span style='color:red'>{$str}</span>";//给变量加上样式 return $str;//将变量返回 }
在test.php页面里面写一个变量,而且将处理完的变量注入到smarty模板里面。
<?php session_start(); //引入配置文件 include("../init.inc.php");//init.inc.php里面已经造smarty对象了。 $a = "hello";//要传过去的变量 $smarty->assign("a",$a);//把变量注入smarty模板里面 $smarty->display("test.html");//调用模板文件来显示
前端页面test.html显示
<body> <{$a|color}><!--注意引入的写法--> </body>
结果显示为
3.下面看D:\wamp\www\project\plugins里面的function.shuchu.php文件
下面是文件的内容
<?php function smarty_function_shuchu($args)//$args是传过来的变量 { for($i=0;$i<10;$i++)//循环输出了10次aaaaaaaa { echo "aaaaaaaa<br>"; } }
若是没有参数要传,就不须要写参数。
<body> <{shuchu}><!--直接输出就能够,没有参数就不须要写参数--> </body>