您的位置:首页 > 其它

ECMall2.x模板制作入门系列之B

2014-02-23 09:28 246 查看
ECMall2.x模板制作入门系列之2(模板标签/语法)

今天给大家带来一个模板语法的教程。希望能为ECMall模板制作者提供一份参考资料。如有问题、建议和意见,欢迎提出。在ECMall模板中,用”{“开头,以”}”结尾就构成一个标签单元,”{“紧接着的单词就是标签名。在标签单元中单词前含”$”(美元符)的为变量名。

一、资源引用


res标签


功能:返回当前模板当前风格目录的url路径

实例:{res
file=css/ecmall.css}这个标签在模板编译后将变成http://商城域名/themes/default/styles/default,注意末尾没有”/”,返回结果会随后台设置的主题变化

lib标签

功能:返回javascript库的url路径

实例:{lib
file=ecmall.js}这个标签在模板编译后将变成http://商城域名/includes/libraries/javascript,注意末尾没有”/”,返回结果不会随后台设置的主题变化

url标签

功能:url解析器,可根据后台伪静态状态返回相应url等。

说明:如果一个链接的目标页面需要伪静态功能,请使用该url标签,只有当后台开启伪静态并在.htaccess文件为目标页面设置了伪静态规则时url标签才能解析为静态url地址。

实例:{url
app=goods&id=$goods_id}解析后如果伪静态成功则返回”goods/19″

include标签

功能:

Include 标签用于在当前模板中包含其它模板. 当前模板中的变量在被包含的模板中可用. 必须指定 file
属性,该属性指明模板资源的位置.实例:

模板代码:
{include file="header.html"}

{* body of template goes here *}

{include file="footer.html"}


二、模板变量


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.自定义变量


从php赋值变量:

例如在调用该模板的app程序文件中进行赋值

复制内容到剪贴板

代码:

//在app/default.app.php文件的index方法中$this->display前添加赋值语句

$this->assign('name', 'Tom'); //普通变量

$this->assign('user', array(

'name' => 'Tom',

'age'    =>
'28'

)); //数组变量

$this->display('index.html');


在themes/mall/default/index.html中显示变量

模板代码:
Hello,{$name},your age are {$user.age}!


在模板中赋值变量:

assign标签

例在themes/mall/default/index.html中赋值变量

模板代码:
{assign var="name" value="Tom"}

Hello,{$firstname}!


3.模板上使用语言项

说明:为了满足多语言需求,ECMall采用了语言包机制,除挂件外,在模板、js文件中均使用语言项代替直接显示语言文字。

语言文件:语言文件位于商城根目录下的languages目录下,为当前语言建了一个目录,如果您用的是sc-gbk版本,则会有sc-gbk目录,进去之后就能看到属于前台控制器的全部语言文件了。除common.lang.php属于所有app外,每一个语言文件都只属于一个app(ECMall中称为控制器)。

引用:

语言文件属于某个控制器而不属于某个模板,同一个模板如果被不同控制器调用将使用不同语言文件进行语言解析

实例1:

在默认控制器对应的语言文件default.lang.php添加语言项”test”

复制内容到剪贴板

代码:
<?php

return array(

'hot_search' => '热门搜索',

... ...

'best_recommended' => '精品推荐',

'test' => '测试语言项'

);

?>


在index.html模板中显示语言项”test”

模板代码:
{$lang.test}


输出结果为:

测试语言项

实例2:

模板中还支持数组形式语言项:

在默认控制器对应的语言文件default.lang.php添加语言项”test_array”

复制内容到剪贴板

代码:
<?php

return array(

'hot_search' => '热门搜索',

... ...

'best_recommended' => '精品推荐',

'test_array' => array(

'key1' => '测试数组语言项',

'key2' => '太好了'

),

);

?>


在index.html模板中显示语言项”test”

模板代码:
{$lang.test_array.key1}


输出结果为:

测试数组语言项

4.变量调节器


escape


功能:提供各种编码功能

参数:可选参数html、url、quotes、input、editor,缺省为html

html:分别替换变量中的如下字符& < > ”为其html实体代码,用于按原样输出html源代码

url:如果该变量用于储存url地址,需要进行url编码

quotes:在单双引号字符前添加反斜杠

input:给输入框赋值时使用

editor:当显示通过文本编辑器录入的内容,需要用此参数

实例

php赋值

复制内容到剪贴板

代码:
$this->assign('goods_name',
"L'oreal/欧莱雅"  .  '"'
.
"清润全日保湿乳霜"  .  '"'
. "50ml<br
/><script>");

$this->display('index.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"}


输出结果为

L’oreal/欧莱雅”清润全日保湿乳霜”50ml<br
/><script>

L’oreal/欧莱雅”清润全日保湿乳霜”50ml<br
/><script>

L’oreal/欧莱雅”清润全日保湿乳霜”50ml<br
/><script>

L'oreal/欧莱雅"清润全日保湿乳霜"50ml
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: