在smarty模板中,可以很容易实现拼接字符串,有一个简单好用的方法,即使用“|cat:”来实现。
例如:
<{foreach item=j from=$def}>
<img src="/blog_article/<{$i.floder_cat_130__$j.picname}>" />
<{/foreach}>
<{/foreach}>
以上方法,简单实用。
不过,有些应用场景中,还是要用到<{assign}>方法,这个大家可以找点文章,好好研究下。
需求:在页面使用smarty循环100次输出,类似for循环100次。
例如:
{$smarty.section.total.index+1} //当前的索引
{$smarty.section.total.iteration} //用于显示循环的次数
{/section}
还可以这样:
{section name=total loop=100}
{assign var=i value=$i+1} {$i} //使用assign的方式赋值
{/section}
输出结果: 1 2 3 4 5 ... ... 100
另外,介绍下在smarty中使用php函数的方法。
在smarty模板中,如果使用php函数,只有一个参数的函数比如说去空白的trim可以这样来写:
例1:
那如果使用像iconv这样的有三个参数的函数该怎么写呢?如果写成:
例2:
一执行就会发现显示error信息。
起始在smarty模板页的套用函数用法中,以例1来说,trim的前面$Row->colname其实就是trim的第一个参数,中间用|这个符号串接;
那假设要使用像iconv有三个参数的函数的话,就要写成:
例3:
即,函数第一个参数|函数:第二个参数:第三个参数。
例3中会把colname的值从utf-8格式转换成gbk。
在Smarty 中获取当前日期时间和格式化日期时间,PHP原生代码略有不同。
首先,获取当前的日期时间:
在PHP中我们会使用date函数来获取当前的时间,实例代码如下:
但是在Smarty 模板中,不能使用date,而是使用 now 来获取当前的时间,例如:
还可以将这个时间戳格式化,例如:
另外,Smarty 中的这个date_format 时间格式化函数和PHP中的 strftime()函数基本上相同,可以去查看PHP中的 strftime() 函数中的format 识别转换标记。
其中 %Y 是代表十进制年份,%m是代表十进制月份,%d 是代表十进制天数,%H 是代表十进制小时数,%M是代表十进制的分数,%S是代表十进制的秒数(这里的S是大写的哦)。
smarty中date_format函数用法
在php中使用date函数来格式化时间戳,smarty中可以使用date_format来实现
具体用法:
输出形式:2010-07-10 16:30:25
其他用法如下:
{$smarty.now|date_format:”%A, %B %e, %Y”}
{$smarty.now|date_format:”%H:%M:%S”}
{$yesterday|date_format}
{$yesterday|date_format:”%A, %B %e, %Y”}
{$yesterday|date_format:”%H:%M:%S”}
来看些具体的例子吧。
在模板页用
index.php:
$smarty->assign('currtime', time());
$smarty->display('index.tpl');
index.tpl:
{$smarty.now|date_format:"%H:%M:%S"}
{$currtime|date_format}//格式化传过来的时间
{$currtime|date_format:"%A, %B %e, %Y"}
{$currtime|date_format:":"%Y-%m-%d %H:%M:%S"}
输出结果:
08:55:25
Dec 26, 2008
Friday, December 26, 2008
2008-08-26 08:55:21