ecshop模板循环foreach的使用方法及参数详解

1、foreach使用规则

他有以下几个参数 from ,item name iteration index

2、如何使用foreach循环

如果php要传递一个数组(如:$array)给ecshop的smarty模板.那么我们将通过from=$array 来接受,写法是

{foreach from = $array item = item}

3、ecshop中smarty的下标如何表示

请看下面的例子:

{foreach from = $array item = item name=name}

{$smarty.foreach.name.iteration}

{/foreach}

这里的iteration就是从1开始的下标,

如果要从0开始的下标,应该使用{$smarty.foreach.name.index}

4、如何判断是否是foreach循环的开始和结束,最后一个元素.

{if $smarty.foreach.last}表示循环的最后一个元素.{if $smarty.freach.first}表示循环的开始.

5、如何使用双重循环

举例如下:

{foreach from = $test item =item}

{foreach from=$item.children item=child}

{$child.name}

{/foreach}

{/foreach}

上面五条是官方找到的,下面我通过几天的应用,总结出了ec模版中foreach的常见用法。

假如后台:$smarty->assign('test',$test);

{foreach from=$test item=list name=listone}

<p>{$list}</p>

{/foreach}

from 表示assign过来对应的第一个参数'test',item 就是下面要循环的变量,name是用于访问foreach属性的foreach循环的名称,key当前键名的变量名。

但是我们经常会看到这样的写法:

<!--{foreach from=$test item=list name=listone key=key}-->

<p>{$list}</p>

<!--{/foreach}-->

其实这两种都是一样的,只是加了 <!-- --> 之后,你有没有发现用dreamwearver打开这些语句会以注释一样的灰色显示,这样一眼能看出标签;还有就是调试模版时候,用浏览器打开,加了<!-- -->会注释掉if foreach等这些,而不影响模版原来的样子,更能方便调试模版。

多重循环(两次循环):

<!--{foreach from=$categories item=list}-->

<!--{foreach from=$list.cat item=cat}-->

<a href="{$cat.url}">{$cat.name}</a>

<!--{/foreach}-->

<!--{/foreach}-->

只循环出前两条数据:

<!--{foreach from=$categories item=list name=catlist}-->

<!--{if $smarty.foreach.catlist.iteration<2}-->

<a href="{$list.url}">{$list.name}</a>

<!--{/if}-->

<!--{/foreach}-->

foreachelse :

<!--{foreach from=$categories item=list}-->

<a href="{$list.url}">{$list.name}</a>

<!--{foreachelse}-->

<p>no data</p>

<!--{/foreach}-->

如果{foreach from=$categories item=list}一条数据也没有,那么就执行下面的{foreachelse}{/foreach}里面的内容。

时间: 2024-10-03 11:26:57

ecshop模板循环foreach的使用方法及参数详解的相关文章

MySQL高速缓存启动方法及参数详解(query_cache_size)_Mysql

MySQL query cache从4.1版本开始提供了,不过值今天本人才对其进行研究.默认配置下,MySQL的该功能是没有启动的,可能你通过show variables like '%query_cache%';会发现其变量have_query_cache的值是yes,MYSQL初学者很容易以为这个参数为YES就代表开启了查询缓存,实际上是不对的,该参数表示当前版本的MYSQL是否支持Query Cache,实际上是否开启查询缓存是看另外一个参数的值:query_cache_size ,该值为

Memcache所有方法及参数详解以及使用方法

参考http://www.php.net/manual/zh/function.Memcache-add.php Memcache::add - 添加一个值,如果已经存在,则返回false Memcache::addServer - 添加一个可供使用的服务器地址 Memcache::close - 关闭一个Memcache对象 Memcache::connect - 创建一个Memcache对象 memcache_debug - 控制调试功能 Memcache::decrement - 对保存的

python魔法方法-属性访问控制详解_python

属性访问控制 所谓的属性访问控制就是控制点号访问属性的行为,而且不仅是类的外部,连类的内部也受控制,代码见真章,边看代码边解释: •__getattr__(self, item) 定义当访问不存在的属性时的行为,注意是不存在的属性. class Foo(object): def __init__(self, value): self.value = value def __getattr__(self, item): print item # 查看得到的参数是什么 print type(item

python魔法方法-自定义序列详解_python

自定义序列的相关魔法方法允许我们自己创建的类拥有序列的特性,让其使用起来就像 python 的内置序列(dict,tuple,list,string等). 如果要实现这个功能,就要遵循 python 的相关的协议.所谓的协议就是一些约定内容.例如,如果要将一个类要实现迭代,就必须实现两个魔法方法:__iter__.next(python3.x中为__new__).__iter__应该返回一个对象,这个对象必须实现 next 方法,通常返回的是 self 本身.而 next 方法必须在每次调用的时

Android ListView里控件添加监听方法的实例详解

Android ListView里控件添加监听方法的实例详解 关于ListView,算是android中比较常见的控件,在ListView我们通常需要一个模板,这个模板指的不是住模块,而是配置显示在ListView里面的东西,今天做项目的时候发现想要添加一个ImageView监听方法,发现崩了,也许是好久没有动ListView竟然忘了不能直接在主UI的xml文件里面调用其他xml文件的控件,哪怕ListView用的是这个xml文件. [错误示范]: 直接调用ImageView这个控件是ListV

C#基础语法:方法参数详解

这篇文章主要介绍了C#基础语法:方法参数详解,本文讲解了值参数.引用参数.输出参数.参数数组等参数类型,并分别给出代码实例,需要的朋友可以参考下     ●值参数 :一个值参数相当于一个局部变量,当使用值参数的时候,将会分配一个新的存储位置,将实参拷贝到该位置,并将该拷贝值传递给该方法.因此,值参数只能将值带进方法,但是不能带出方法,而不会影响实参的值. ●引用参数:当使用引用参数的时候,将不会分配一个新的存储位置,In other words,引用参数能将值带进方法,也能带出方法,因而会影响实

JavaScript中reduce()方法的使用详解

  这篇文章主要介绍了JavaScript中reduce()方法的使用详解,是JS入门学习中的基础知识,需要的朋友可以参考下 JavaScript 数组reduce()方法同时应用一个函数针对数组的两个值(从左到右),以减至一个值. 语法 ? 1 array.reduce(callback[, initialValue]); 下面是参数的详细信息: callback : 函数执行在数组中每个值 initialValue : 对象作为第一个参数回调的第一次调用使用 返回值: 返回数组的减少单一个值

JavaScript中String.match()方法的使用详解

  这篇文章主要介绍了JavaScript中String.match()方法的使用详解,是JS入门学习中的基础知识,需要的朋友可以参考下 此方法用于当匹配针对正则表达式的字符串来检索匹配. 语法 ? 1 string.match( param ) 下面是参数的详细信息: param : 正则表达式对象 返回值: 如果正则表达式不包括g标志,返回的结果相同于regexp.exec(string) 如果正则表达式包含g标志,则该方法返回一个包含所有匹配的数组 例子: ? 1 2 3 4 5 6 7

JavaScript中toString()方法的使用详解

  这篇文章主要介绍了JavaScript中toString()方法的使用详解,是JS入门学习中的基础知识,需要的朋友可以参考下 JavaScript Boolean.toSource()方法返回表示对象的源代码的字符串. 注意:此方法不会在Internet Explorer中运行. 语法 ? 1 boolean.toSource() 下面是参数的详细信息: NA 返回值 返回表示对象的源代码的字符串. 例子: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1