升东运维是一家专业从事Linux/Freebsd Unix/Windows平台网站维护业务的公司,专业提供Linux(CentOS Redhat Ubuntu等),Unix(Freebsd),Nginx,Apache等系统及网站维护,七年从业经验

Archive for the ‘Smarty’ Category

smarty隔行换色实现函数

星期二, 二月 15th, 2011

smarty隔行换色实现函数cycle,在smarty手册里面可以找到

{section name=rows loop=$data}
<tr bgcolor=”{cycle values=”#eeeeee,#d0d0d0″}”>
<td>{$data[rows]}</td>
</tr>
{/section}
OUTPUT:
<tr bgcolor=”#eeeeee”>
<td>1</td>
</tr>
<tr bgcolor=”#d0d0d0″>
<td>2</td>
</tr>
<tr bgcolor=”#eeeeee”>
<td>3</td>
</tr>

Smarty中的foreach,for,foreachelse [循环处理数组]模板内变量赋值

星期二, 一月 18th, 2011

1.smarty模板内赋值

{assign var=”title” value=$title|default:”no title”}

smarty for 循环实现
2.用一段section模拟

$smarty->assign(‘count’, 5);
{section name=xunhuan loop=$count}
id: {$smarty.section.xunhuan.index}
{/section}

3.

摘自:http://hi.baidu.com/cxd1201/blog/item/0ddf1736066301a5d1a2d3f6.html

相关参数:

属性                       类型                    是否必须                      缺省值                      描述

from string                    Yes                          n/a           待循环数组的名称

item string                   Yes                           n/a           当前处理元素的变量名称

key string                     No                             n/a           当前处理元素的键名

name string                    No                           n/a         该循环的名称,用于访问该循环

foreach 是除 section 之外处理循环的另一种方案(根据不同需要选择不同的方案)。 foreach 用于处理简单数组(数组中的元素的类型一致),它的格式比 section 简单许多,缺点是只能处理简单数组。

foreach 必须和 /foreach 成对使用,且必须指定 from 和 item 属性。

将 from 属性指定的数组中的数据遍历处理到 item 属性指定的变量中。

参考 foreach (array_expression as $key => $value)

from <=> array_expression;item <=> $value;key <=> $key。

name 属性可以任意指定(字母、数字和下划线的组合)。

foreach 可以嵌套,但必须保证嵌套中的 foreach 名称唯一。

from 属性(通常是数组)决定循环的次数。

foreachelse 语句在 from 属性没有值的时候被执行。(from 属性所指定的值为空时,可用 foreachelse 语句指定——否则-干什么)

foreach   循 环 有 自 己 的 变 量 名 , 使 用 该 变 量 名 可 以 访 问 该 循 环 .   使 用 方 法 为

{$smarty.foreach.foreachname.varname},其中 foreachname 即在 foreach 中指定的 name 属性。

foreach 演示

{* 该例将输出数组 $custid 中的所有元素的值 *}
{foreach from=$custid item=curr_id}
id: {$curr_id}<br>
{/foreach}


输出结果:

id: 1000
id: 1001
id: 1002

foreach 的演示和嵌套的演示

{*
数组定义如下:
$smarty->assign(“contacts”, array(array(“phone” => “1”, “fax” => “2”, “cell” => “3”),
array(“phone” => “555-4444”, “fax” => “555-3333”, “cell” => “760-1234”)));
*}
{* 键就是数组的下标,请参看关于数组的解释 *}

{foreach name=outer item=contact from=$contacts}
{foreach key=key item=item from=$contact}
{$key}: {$item}<br>
{/foreach}
{/foreach}

输出结果:

phone: 1
fax: 2
cell: 3
phone: 555-4444
fax: 555-3333
cell: 760-1234

.index

index 包含当前数组索引,从”0″开始

例如:
<table>
{foreach from=$items key=myId item=i name=foo}
{if $smarty.foreach.foo.index % 5 == 0}               {* $smarty.foreach.foo.index 对 5 求余 *}
<tr><th>Title</th></tr>
{/if}
<tr><td>{$i.label}</td></tr>
{/foreach}
</table>

.iteration

iteration 包含当前循环的执行次数,总是从 1 开始,每执行一次自加 1。

例如:

{* 输出 0|1, 1|2, 2|3, …     等等 *}
{foreach from=$myArray item=i name=foo}
{$smarty.foreach.foo.index}|{$smarty.foreach.foo.iteration},
{/foreach}

.first

当前 foreach 循环第一次执行时 first 被设置成 true。

例如:

{* 当循环第一次执行时显示 LATEST , o 否则显示 id *}
<table>
{foreach from=$items key=myId item=i name=foo}
<tr>
<td>{if $smarty.foreach.foo.first}LATEST{else}{$myId}{/if}</td>
<td>{$i.label}</td>
</tr>
{/foreach}
</table>

.last

当前 foreach 循环执行到最后一遍时 last 被设置成 true.

例如:

{* 在列表最后添加水平线 *}
{foreach from=$items key=part_id item=prod name=products}
<a href=”#{$part_id}”>{$prod}</a>{if $smarty.foreach.products.last}<hr>{else},{/if}
{foreachelse}
… content …
{/foreach
}

.total

total 用于显示循环执行的次数,可以在循环中或循环执行后调用.

例如:

{* 在最后显示行数 *}
{foreach from=$items key=part_id item=prod name=foo}
{$prod.label}<hr/>
{if $smarty.foreach.foo.last}
<div id=”total”>{$smarty.foreach.foo.total} items</div>
{/if}
{foreachelse}
… something else …

{/foreach}