Smarty模板进阶教程(一)
在上一篇教程中,我们接触的第一个例子就是简单变量,通过在模板文件的相应位置放置形如{$varname}的变量,然后由php脚本来$smarty->assign('varname','hello world'); 即可为模板中的变量赋予相应值并最终显示。
但是仅仅简单地赋值就太小儿科了,这次我们来看一下Smarty中的变量调节器,它可以作用于变量,自定义函数和字符串。使用时跟随在变量等的后面,用‘|’符号和调节器名称来应用调节器。变量调节器由赋予的参数值决定其行为。多个参数由‘:’符号分开。基本形式如下:
{$topic|truncate:40:"..."}
{"now"|date_format:"%Y/%m/%d"}
如果你给数组变量应用单值变量的调节,结果是数组的每个值都被调节。如果你只想要调节器用一个值调节整个数组,你必须在调节器名字前加上@符号。例如: {$articleTitle|@count}(这将会在 $articleTitle 数组里输出元素的数目)
下面我们用一个例子来看几个调节器的用法
<html> <head><title>smarty的模板调节器示例</title></head> <body> 1. 第一句首字母要大写:{$str1|capitalize}<br> 2. 第二句模板变量 + 张瑜:{$str2|cat:张瑜"}<br> 3. 第三句输出当前日期:{$str3|date_format:"%Y年%m月%d日"}<br> 4. 第四句.php程序中不处理,它显示默认值:{$str4|default:"没有值!"}<br> 5. 第五句要让它缩进8个空白字母位,并使用"*"取替这8个空白字符:<br>{$str5|indent:8:"*"}}<br> 6. 第六句把JaDDy@oNCePlAY.CoM全部变为小写:{$str6|lower}<br> 7. 第七句把变量中的teacherzhang替换成:张瑜:{$str7|replace:"teacherzhang":"张瑜"}<br> 8. 第八句为组合使用变量修改器:{$str8|capitalize|cat:"这里是新加的时间:"|date_format:"%Y年%m月%d日"|lower} </body> </html> |
第二步是设计php脚本:
<?php |
最终输出效果:
<html>
<head><title>smarty的模板调节器示例</title></head>
<body>
1. 第一句首字母要大写:My Name Is Zhangyu.<br>
2. 第二句模板变量 + 张瑜:我的名字叫:张瑜<br>
3. 第三句输出当前日期:公元2004年8月21日<br>
4. 第四句.php程序中不处理,它显示默认值:没有值!<br>
5。第五句要让它缩进8个空白字母位,并使用"*"取替这8个空白字符:<br>********前边8个*<br>
6. 第六句把JaDDy@oNCePlAY.CoM全部变为小写:jaddy@onceplay.com<br>
7. 第七句把变量中的teacherzhang替换成:张瑜:this is 张瑜<br>
8. 第八句为组合使用变量修改器:Here is Combining:这里是新加的时间:2004年8月21日
</body>
</html>
下面是一些变量调节器的列表,具体使用大家可以查阅Smarty手册。
capitalize | 首字大写 |
count_characters | 计算变量里的字符数 |
cat | 将cat里的值连接到给定的变量后面 |
count_paragraphs | 计算变量里的段落数量 |
count_sentences | 计算变量里句子的数量 |
count_words | 计算变量里的词数 |
date_format | 格式化日期 |
default | 默认值 |
escape | 用于html转码,url转码 |
indent | 缩进 |
lower | 将变量字符串小写 |
nl2br | 所有的换行符将被替换成 <br /> |
regex_replace | 寻找和替换正则表达式 |
replace | 简单的搜索和替换字符串 |
spacify | 在字符串的每个字符之间插入空格或者其他的字符(串) |
string_format | 字符串格式化 |
strip | 用一个空格或一个给定字符替换所有重复空格,换行和制表符 |
strip_tags | 去除<和>标签,包括在<和>之间的任何内容 |
truncate | 从字符串开始处截取某长度的字符.默认是80个 |
upper | 将变量改为大写 |
wordwrap | 可以指定段落的宽度(也就是多少个字符一行,超过这个字符数换行)。默认80 |
另外大家也可以查看smarty/plugins目录中以modifier开头的文件,它们其实就是这些变量调节器的源代码。