ECMall2.x模板制作入门系列之2(模板标签/语法)
2016-07-07 16:47 来源:www.chinab4c.com 作者:ecshop专家
今天给大家带来一个模板语法的教程。希望能为ECMall模板制作者提供一份参考资料。如有问题、建议和意见,欢迎提出。 在ECMall模板中,用"{"开头,以"}"结尾就构成一个标签单元,"{"紧接着的单词就是标签名。在标签单元中单词前含"$"(美元符)的为变量名。 一、资源引用 res标签
lib标签
url标签
include标签
{* body of template goes here *} {include file="footer.html"}[/tpl] 二、模板变量 1.模板保留变量 模板预置的一些系统变量,包括 $smarty.now当前时刻对应的格林尼治时间戳,可以用{$smarty.now|date}显示当前日期时间,关于date变量调节器请看下文讲解。 $smarty.get$smarty.post $smarty.cookie $smarty.env $smarty.server $smarty.request $smarty.session同php的$_GET、$_POST、$_COOKIE、$_ENV、$_SEVER、$_REQUEST、$_SESSION变量。非程序人员如果需要了解请参考php相关手册了解 2.自定义变量
[/tpl]
assign标签 例在themes/mall/default/index.html中赋值变量 [tpl]{assign var="name" value="Tom"} Hello,{$firstname}! [/tpl] 3.模板上使用语言项
语言文件属于某个控制器而不属于某个模板,同一个模板如果被不同控制器调用将使用不同语言文件进行语言解析
[tpl]{$lang.test}[/tpl] 输出结果为: 测试语言项
模板中还支持数组形式语言项: 在默认控制器对应的语言文件default.lang.php添加语言项"test_array"
[tpl]{$lang.test_array.key1}[/tpl] 输出结果为: 测试数组语言项 4.变量调节器 escape 功能:提供各种编码功能 参数:可选参数html、url、quotes、input、editor,缺省为html html:分别替换变量中的如下字符&<>"为其html实体代码,用于按原样输出html源代码 url:如果该变量用于储存url地址,需要进行url编码 quotes:在单双引号字符前添加反斜杠 input:给输入框赋值时使用 editor:当显示通过文本编辑器录入的内容,需要用此参数 实例 php赋值
[tpl]{$goods_name} {$goods_name|escape} {$goods_name|escape:"html"} {$goods_name|escape:"url"} {$goods_name|escape:"quotes"} {$goods_name|escape:"input"} {$goods_name|escape:"editor"} [/tpl] 输出结果为 L'oreal/欧莱雅"清润全日保湿乳霜"50ml<br /><script> L'oreal/欧莱雅"清润全日保湿乳霜"50ml<br /><script> L'oreal/欧莱雅"清润全日保湿乳霜"50ml<br /><script> L%27oreal%2F%E6%AC%A7%E8%8E%B1%E9%9B%85%22%E6%B8%85%E6%B6%A6%E5%85%A8%E6%97%A5%E4%BF%9D%E6%B9%BF%E4%B9%B3%E9%9C%9C%2250ml%3Cbr+%2F%3E%3Cscript%3E L\'oreal/欧莱雅\"清润全日保湿乳霜\"50ml<br /><script> L'oreal/欧莱雅\"清润全日保湿乳霜\"50ml<br /><script> L'oreal/欧莱雅"清润全日保湿乳霜"50ml<br /><script> nl2br
default
truncate
strip_tags
{$content|strip_tags}[/tpl]输出结果为:文章内容 price
{$goods_price|price}[/tpl]输出结果为:¥123,456.00 date
simple和complete均可由后台设置,自定义日期格式请参考http://docs.php.net/manual/zh/function.date.php
{$smarty.now|date:complete} {$smarty.now|date:Y-m-d H:i} [/tpl]输出结果为: 2010-12-01 2010-12-01 22:49:46 2010-12-01 22:49 modifier
三、流程控制标签 1.条件判断(if,elseif,else)
模板中的 if 语句和 php 中的 if 语句一样灵活易用,并增加了几个特性以适宜模板引擎. if 必须于 /if 成对出现. 可以使用 else 和 elseif 子句. 可以使用以下条件修饰词:eq、ne/neq、gt、lt、lte/le、gte/ge、mod、not、==、!=、>、<、<=、>=、%、!使用这些修饰词时必须和变量或常量用空格格开. 多个条件之间用 and、or、&&、|| 连接,实现简单的逻辑运算
Welcome Sir. {elseif $name eq "Wilma"} Welcome Ma'am. {else} Welcome, whatever you are. {/if} {* 一个"或"逻辑的例子 *} {if $name eq "Fred" or $name eq "Wilma"} ... {/if} {* 与上例等效 *} {if $name == "Fred" || $name == "Wilma"} ... {/if} {* 下面的语法无效,条件修饰符必须由空格跟其他元素分开 *} {if $name=="Fred" || $name=="Wilma"} ... {/if} {* 允许使用括号 *} {if ( $amount < 0 or $amount > 1000 ) and $volume >= #minVolAmt#} ... {/if} [/tpl] 2.数组遍历(foreach,foreachelse)
foreach 必须和 /foreach 成对使用,且必须指定 from 和 item 属性。 foreach 可以嵌套,但必须保证嵌套中的 foreach 名称唯一。 foreachelse 语句在 from 变量没有值的时候被执行。 from 属性:指定被循环的数组,数组长度决定了循环的次数。 item属性:单个循环项目的变量名,在循环内部使用。 name 属性为可选属性,可以任意指定(字母、数字和下划线的组合)。 name 属性如果指定,foreach循环体内会自动生成如下变量 $smarty.foreach.foreach_name.index表示本次循环索引,从0开始递增的整数 $smarty.foreach.foreach_name.iteration表示本次的循环次数,从1开始递增的整数 $smarty.foreach.foreach_name.first表示是否是第一次循环 $smarty.foreach.foreach_name.last表示是否是最后一次循环 $smarty.foreach.foreach_name.show表示是否有数据 $smarty.foreach.foreach_name.total表示循环总次数,也可在循环体外使用
{foreach from=$custid item=curr_id} id: {$curr_id}<br> {/foreach} [/tpl] 输出结果为: id: 1000<br> id: 1001<br> id: 1002<br>
{foreach name=outer item=contact from=$contacts} {foreach key=key item=item from=$contact} {$key}: {$item}<br> {/foreach} {/foreach} [/tpl] 输出结果为: phone: 1<br> fax: 2<br> cell: 3<br> phone: 555-4444<br> fax: 555-3333<br> cell: 760-1234<br> [tpl]{* 最后一行不显示<br>标签 *} {foreach name=outer item=contact from=$contacts name=my_name} {foreach key=key item=item from=$contact} {$key}: {$item}{if !smarty.foreach.my_name.last}<br>{/if} {/foreach} {/foreach} [/tpl] 输出结果为: phone: 1<br> fax: 2<br> cell: 3<br> phone: 555-4444<br> fax: 555-3333<br> cell: 760-1234 四、显示标签 cycle
cycle 用于轮转使用一组值。该特性使得在表格中交替输出颜色或轮转使用数组中的值变得很容易。
<tr bgcolor="{cycle values="#eeeeee,#d0d0d0"}"> <td>{$data}</td> </tr> {/foreach} [/tpl] 输出结果为: <tr bgcolor="#eeeeee"> <td>1</td> </tr> <tr bgcolor="#d0d0d0"> <td>2</td> </tr> <tr bgcolor="#eeeeee"> <td>3</td> </tr> html_options
自定义函数 html_options 根据给定的数据创建选项组. 该函数可以指定哪些元素被选定. 要么必须指定 values 和 ouput 属性,要么指定 options 替代。
{html_options values=$cust_ids selected=$customer_id output=$cust_names} </select> [/tpl]
{html_options options=$cust_options selected=$customer_id} </select> [/tpl] 实例1和实例2输出结果均为: <select> <option value="1000">Joe Schmoe</option> <option value="1001" selected>Jack Smith</option> <option value="1002">Jane Johnson</option> <option value="1003">Carlie Brown</option> </select> html_radios
自定义函数 html_radios 根据给定的数据创建选项组. 该函数可以指定哪些元素被选定. 要么必须指定 values 和 ouput 属性,要么指定 options 替代。与html_options不同的是html_radios有一个checked属性 html_radios
自定义函数 html_radios 根据给定的数据创建单选按钮组。该函数可以指定哪个元素被选定。要么必须指定 values 和 ouput 属性,要么指定 options 替代。与html_options不同的是html_radios有一个checked属性。 html_checkbox
自定义函数 html_checkboxes 根据给定的数据创建复选按钮组。该函数可以指定哪些元素被选定。 要么必须指定 values 和 ouput 属性,要么指定 options 替代.。与html_options不同的是html_checkbox有一个checked属性。 sprintf
[tpl] {sprintf lang=query_info var1=query_time var2=query_count var3=query_user_count} [/tpl] 输出结果为: 页面执行 0.160 秒, 查询 3 次,在线 10 人 |
回答:
看老兄水平高,请教个问题行不,我修改店铺导航实现了外链接功能,但在店铺不知怎么判断读出, 默认是url app=store&act=article&id=$store_nav.article_id这个链接, |
很好,很强大,严重顶一下,支持!!! |
勁呀...雖然唔識, 但都支持 |
顶,太好了 |
不错不错,谢谢啦。 |
assign标签的例子, 应该是 {assign var="firstname"value="Tom"} HEllo,{$firstname}。 变量不对应。 |
学习了!!希望还有更多的教程!! |
很强大,严重顶一下 |
喔顶一下,严重支持 |
太他妈的强了,学习了 |
不错额,很强,学习了 |
字符串截取怎么截取不了??{$goods.goods_name|truncate:20}这样不行啊 |
mark! |
最近更新
常用插件
- ecshop使用手机验证码登陆
ecshop使用手机验证码登陆,这个功能很新颖,有些特殊的ecshop站点,他到...
- ecshop中nginx实现url的重写
上几章为了让ecshop很好的在nginx上运行。我们搭配了ecshop的nginx下的工作...
- ecshop商品分类名称增加样
ecshop插件介绍:本插件可以方便在后台管理,为ecshop商品分类名称增加样...
- ecshop 手机注册验证插件
ecshop 手机注册验证插件 ,需要通过手机获短信,然后注册验证 价格:...
- ecshop根据订单批量发红包
ecshop根据订单批量发红包 ,大家肯定对ecshop红包不陌生,但是对ecshop订...
ecshop热门问答
ecshop热门资料
ecshop灯箱
ecshop求证
调用标签
ecshopbytes
ecshop页面乱了
ecshopunserialize
ecshop截至日期
ecshop产品图片上传
ecshopbrson
ecshop价格显示
ecshop完全
ecshop换行符
ecshopcps接口
ecshop畅销
ecshop百度谷歌
ecshopGmail
ecshop心理
会员级别
ecshop头疼
ecshop精神分裂
ecshop路线图
ecshop买卖
ecshop很棒
ecshopdenied
ecshopECMALL一键登录
dedecms修改密码
ecshop项里
ecshop韩国风格
ecshop皮肤
ecmall注册程序