ecshop模板smarty foreach详解

               

Smarty目录:
/libs Smarty的功能类目录
/tempalates 模板文件目录
/templates_c 模板缓存文件目录
/configs 配置文件目录
/cache 缓存文件目录

载入Smarty功能类:
require(’路径/Smarty.class.php’);
$smarty = new Smarty;
自定义Smarty工作目录:
$smarty->template_dir = ‘路径/templates/’;
$smarty->compile_dir = ‘路径/templates_c/’;
$smarty->config_dir = ‘路径/configs/’;
$smarty->cache_dir = ‘路径/cache/’;

常用语法:
$smarty->assign(’模板中的变量名’, 值); //给模板中的变量赋值(可以是数组或对象)
$smarty->display(’模板文件名’); //输出模板

常用标签语法:
所有的smarty模板标签都被加上了定界符, 默认情况下是 { 和 }

注释:{* 注释内容 *}
函数:{函数名称[ 参数名1=值1[ 参数名2=值2]]}
变量: {$变量名}
数组: {$数组名.元素名} 或 {$数组名.[元素索引]}
对象:{$对象名->属性名}

从配置文件引用的变量:
配置文件名为: *.conf
在模板中引入:{config_load file=”配置文件名.conf”}
在模板中的变理标签:{#变量名#}

变量调节器:
{$变量名|调节器名} //用于变量
{”字符串”|调节器名} //用于字符串
{函数名|调节器名 函数的参数名=值} //用于函数
{$变量名|调节器名1[|调节器名2|...]} //使用多个调节器

‘{’字符: {ldelim}
‘}’字符: {rdelim}

原文输出:{literal}{/literal} 里面的文本内容将不会被模板引擎解析,原样输出

在模板中直接写PHP语句: {php}php语句;{/php}

条件:
为了简单,条件表达式与PHP中相同即可.
{if 条件表达式1}
内容1
[{elseif 条件表达式2}
内容2
{else}
内容3]
{/if}

循环:
{foreach from=$数组名 item=当前处理元素的变量名称[ key=当前处理元素的键名][ name=用于嵌套中的名称必须唯一]}
循环体…
{$当前处理元素的变量名称} {* //遍历数组时元素的引用 *}
{/foreach}

缓存:
$smarty = new Smarty;
$smarty->caching = 2; //缓存设置,值为: 0,关闭缓存(默认) 1,开启缓存(缓存默认时间为3600秒) 2,指定缓存的时间
$smarty->cache_lifetime = 3600; //设置缓存时间,单位秒。
$smarty->display(’index.tpl’);

 

ecshop模板smarty foreach详解 
{foreach},{foreachelse}
{foreach} 用于像循环访问一个数字索引数组一样循环访问一个关联数组,与仅能访问数字索引数组的{section}不同,{foreach}的语法比 {section}的语法简单得多,但是作为一个折衷方案也仅能用于单个数组。每个{foreach}标记必须与关闭标记{/foreach}成对出现。
属性
1、from    类型:array数组 必要性:Yes必要 默认值:n/a    描述:循环访问的数组
2、item     类型:string字符串     必要性:Yes必要     默认值:n/a     描述:当前元素的变量名
3、key      类型:string字符串     必要性:No可选     默认值:n/a     描述:当前键名的变量名
4、name   类型:string字符串     必要性:No可选     默认值:n/a     描述:用于访问foreach属性的foreach循环的名称
from和item是必要属性
{foreach}循环的name可以是任何字母,数组,下划线的组合,参考PHP变量。
{foreach}循环可以嵌套,嵌套的{foreach}的名称应当互不相同。
from属性通常是值数组,被用于判断{foreach}的循环次数。
在from变量中没有值时,将执行{foreachelse}。
{foreach}循环也有自身属性的变量,可以通过{$smarty.foreach.name.property}访问,其中"name"是name属性。
注意:name属性仅在需要访问{foreach}属性时有效,与{section}不同。访问未定义name的{foreach}属性不会抛出一个错误,但将导致不可预知的结果。
{foreach}属性有index, iteration, first, last, show, total.
示例:
例一. item属性
<?php
$arr = array(1000, 1001, 1002);
$smarty->assign('myArray', $arr);
?>
用模板以无序列表输出$myArray
<ul>
{foreach from=$myArray item=foo}
<li>{$foo}</li>
{/foreach}
</ul>
上例将输出:
<ul>
<li>1000</li>
<li>1001</li>
<li>1002</li>
</ul>
例二. 演示item和key属性
<?php
$arr = array(9 => 'Tennis', 3 => 'Swimming', 8 => 'Coding');
$smarty->assign('myArray', $arr);
?>
用模板按键名/键值对的形式输出$myArray, 类似于PHP的foreach。
<ul>
{foreach from=$myArray key=k item=v}
<li>{$k}: {$v}</li>
{/foreach}
</ul>
上例将输出:
<ul>
<li>9: Tennis</li>
<li>3: Swimming</li>
<li>8: Coding</li>
</ul>
例三. {foreach}的item属性是关联数组
<?php
$items_list = array(23 => array('no' => 2456, 'label' => 'Salad'),
96 => array('no' => 4889, 'label' => 'Cream')
);
$smarty->assign('items', $items_list);
?>
模板中,url通过$myId输出$items
<ul>
{foreach from=$items key=myId item=i}
<li><a href="item.php?id={$myId}">{$i.no}: {$i.label}</li>
{/foreach}
</ul>
上例将输出:
<ul>
<li><a href="item.php?id=23">2456: Salad</li>
<li><a href="item.php?id=96">4889: Cream</li>
</ul>
例四. {foreach}使用嵌套的item和key
向Smarty设置一个数组,对于每个键名对应的每个循环值都包括键。
<?php
$smarty->assign('contacts', array(
array('phone' => '1',
'fax' => '2',
'cell' => '3'),
array('phone' => '555-4444',
'fax' => '555-3333',
'cell' => '760-1234')
));
?>
用于输出$contact的模板。
{foreach name=outer item=contact from=$contacts}
<hr />
{foreach key=key item=item from=$contact}
{$key}: {$item}<br />
{/foreach}
{/foreach}
上例将输出:
<hr />
phone: 1<br />
fax: 2<br />
cell: 3<br />
<hr />
phone: 555-4444<br />
fax: 555-3333<br />
cell: 760-1234<br />
例五. 使用{foreachelse}的数据库示例
一个数据库(例如PEAR或ADODB)的搜索脚本示例,
<?php
$search_condition = "where name like '$foo%' ";
$sql = 'select contact_id, name, nick from contacts '.$search_condition.' order by name';
$smarty->assign('results', $db->getAssoc($sql) );
?>
借助{foreachelse}标记在没有结果时模板输出"None found"字样。
{foreach key=cid item=con from=$results}
<a href="contact.php?contact_id={$cid}">{$con.name} - {$con.nick}</a><br />
{foreachelse}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值