| 3.模板上使用语言项
 说明:为了满足多语言需求,ECMall采用了语言包机制,除挂件外,在模板、js文件中均使用语言项代替直接显示语言文字。
 语言文件:语言文件位于商城根目录下的languages目录下,为当前语言建了一个目录,如果您用的是sc-gbk版本,
 则会有sc-gbk目录,进去之后就能看到属于前台控制器的全部语言文件了。除common.lang.php属于所有app外,
 每一个语言文件都只属于一个app(ECMall中称为控制器)。语言文件属于某个控制器而不属于某个模板,同一个模板如果被不同控制器调用将使用不同语言文件进行语言解析。
 在默认控制器对应的语言文件default.lang.php添加语言项"test":
 <?php
 returnarray(
 'hot_search'=>'热门搜索',
 ... ...
 'best_recommended'=>'精品推荐',
 'test'=>'测试语言项'
 );
 ?>
 
 在index.html模板中显示语言项"test"
 1    {$lang.test}
 模板中还支持数组形式语言项,在默认控制器对应的语言文件default.lang.php添加语言项"test_array"
 <?php
 returnarray(
 'hot_search'=>'热门搜索',
 ... ...
 'best_recommended'=>'精品推荐',
 'test_array'=>array(
 'key1'=>'测试数组语言项',
 'key2'=>'太好了'
 ),
 );
 ?>
 
 在index.html模板中显示语言项"test"
 1    {$lang.test_array.key1}
 4. 变量调节器
 * escape
 功能:提供各种编码功能。
 参数:可选参数html、url、quotes、input、editor,缺省为html html:分别替换变量中的如下字符& < > "为其html实体代码,用于按原样输出html源代码。
 url:如果该变量用于储存url地址,需要进行url编码
 quotes:在单双引号字符前添加反斜杠
 input:给输入框赋值时使用
 editor:当显示通过文本编辑器录入的内容,需要用此参数
 例如php赋值:
 1    $this->assign('goods_name',"L'oreal/欧莱雅"  .  '"'   . "清润全日保湿乳霜"  .  '"'   ."50ml<br /><script>");
 2    $this->display('index.tpl');
 模板
 1    {$goods_name}
 2    {$goods_name|escape}
 3    {$goods_name|escape:"html"}
 4    {$goods_name|escape:"url"}
 5    {$goods_name|escape:"quotes"}
 6    {$goods_name|escape:"input"}
 7    {$goods_name|escape:"editor"}
 输出结果为
 1    L'oreal/欧莱雅"清润全日保湿乳霜"50ml<br /><script>
 2    L'oreal/欧莱雅"清润全日保湿乳霜"50ml<br /><script>
 3    L'oreal/欧莱雅"清润全日保湿乳霜"50ml<br /><script>
 4    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
 5    %9D%E6%B9%BF%E4%B9%B3%E9%9C%9C%2250ml%3Cbr+%2F%3E%3Cscript%3E
 6    L/'oreal/欧莱雅/"清润全日保湿乳霜/"50ml<br /><script>
 7    L'oreal/欧莱雅/"清润全日保湿乳霜/"50ml<br /><script>
 8    L'oreal/欧莱雅"清润全日保湿乳霜"50ml<br /><script>
 * nl2br
 功能:将换行符替换成<br />
 1    {$var|nl2br}
 * default
 功能:为变量设置一个默认值,当变量为空或者未分配的时候,将由默认值替代输出
 1    {$var|default:"no title"}
 * truncate
 功能:字符串截取。从字符串开始处截取某长度的字符。默认会在末尾追加省略号。
 1    {$content|truncate:20}
 * strip_tags
 功能:去除<和>标签,包括在<和>之间的任何内容。
 1    {assignvar="content"value="<b>文章内容</b>"}
 2    {$content|strip_tags}
 * price
 功能:格式化价格。
 1    {assignvar="goods_price"value="123456"}
 2    {$goods_price|price}
 输出结果为:¥123,456.00
 * date
 功能:格式化本地时间和日期。
 格式:{$var|date:format}
 说明:变量$var必须是格林尼治标准时间,php中gmtime()和模板中$smarty.now得到的都是格林尼治标准时间,参数format可为simple、complete或自定义日期格式,缺省为simple。
 1    {$smarty.now|date}
 2    {$smarty.now|date:complete}
 3    {$smarty.now|date:Y-m-d H:i}
 输出结果为:
 1    2010-12-01
 2    2010-12-01 22:49:46
 3    2010-12-01 22:49
 * modifier
 功能:调用php自定义函数。
 格式:{$var|modifier:user_func}
 流程控制标签
 1. 条件判断(if,elseif,else)
 模板中的 if 语句和 php 中的 if 语句一样灵活易用,并增加了几个特性以适宜模板引擎. if 必须于 /if 成对出现. 可以使用 else 和 elseif 子句. 可以使用以下条件修饰词:eq、ne/neq、gt、lt、lte/le、gte/ge、mod、not、==、!=、>、<、<=、>=、%、!使用这些修饰词时必须和变量或常量用空格格开.
 多个条件之间用 and、or、&&、|| 连接,实现简单的逻辑运算
 {if$nameeq"Fred"}
 Welcome Sir.
 {elseif$nameeq"Wilma"}
 Welcome Ma'am.
 {else}
 Welcome, whatever you are.
 {/if}
 
 {* 一个"或"逻辑的例子 *}
 {if$nameeq"Fred"or$nameeq"Wilma"}
 ...
 {/if}
 
 {* 与上例等效 *}
 {if$name=="Fred"||$name=="Wilma"}
 ...
 {/if}
 
 {* 下面的语法无效,条件修饰符必须由空格跟其他元素分开 *}
 {if$name=="Fred"||$name=="Wilma"}
 ...
 {/if}
 
 {* 允许使用括号 *}
 {if($amount< 0or$amount> 1000 )and$volume>= #minVolAmt#}
 ...
 {/if}
 
 |