自己写的一个asp模板引擎

 最近做一套asp的企业网站系统,花了两三天时间写了套模板引擎出来,还算满意

但这可恶的空间,不支持帖代码,把关键字全屏蔽了,只好麻烦有兴趣的朋友移步ITeye了

http://shirne.iteye.com/blog/1171561

下面是最新的模板引擎说明:

模板对象属性

bHtm //是否生成静态

filePath //指定静态文件路径,包括文件名,生成静态时必须指定

相对于htmPath的路径

iche //缓存时间,以秒计,不指定时从常量内取值,0时不缓存

sChr //模板文件的编码,默认gb2312

 

全局变量

//开始替换一次,最后替换一次

{$变量名}

{$apppath} /程序根目录

{$filepath} /上传文件目录

{$template} /当前模板目录

{$source} /当前模板资源目录

{$SiteName}

{$SiteTitle}

{$SiteDesc}

{$SiteKeyWords}

{$siteurl}

{$lang} //当前语言

在标签内使用 $变量名

 

//系统变量

{$query.}

{$form.}

{$cookie.}

{$server.}

{$session.}

 

以上变量不区分大小写

{$obj.key} /注册的obj变量的key值.

 

变量格式

{var:} //直接注册的变量

{$obj.key} //注册的obj的属性

{@} //循环内变量

支持变量格式化,以|分割每一个参数,不需使用引号,函数名不区分大小写

fmtdate 格式化日期 kindly/YYYY-MM-DD HH:NN:SS WWW,不是日期格式将原样输出

cutstr 截取化字符串 长度|尾符

lcase

ucase

nohtml 去除html标签

html 输出html格式

ubb 将ubb转为html

escape 编码

jscode js编码

replace 要替换的字符|替换的字符

trip 去除多余空格

fmtnum 格式化数字 类型|长度|是否截短  1.填充整型,前补0,2.填充小数,后补0,3.转化16进制格式,4.十六进制转换十进制

 

url 1.内容页url,2.列表页url  | 类别|id/page

 

default 默认值.字符串为空时

 

iif 真|假  /会先强制转换布尔

 

filesize将数值转换为磁盘空间计量

 

 

 

以下标签名小写

自定义变量(通过assign注册的字符串或数字)

{var:}

 

//开始读取包含

包含文件,相对于当前模板文件夹,可包含子目录

{include(fiename)}

 

以下标签带有属性,属性必须使用"或'包括,属性内的'使用%27,"使用%22代替

属性名最好使用小写

有[]或[的地方表示该属性可有可无,没有则表示该属性必须指定值

 

函数 用于对标签内容使用指定函数解析

{fn: func="" [args="" [argtype=""]]}{/fn}

函数必须为自定义函数,必须返回字符串,不能使用系统函数

函数参数个数必须符合要求,最多5个参数

第一个参数为标签内容

如果需要其它的参数,使用args=""属性.

参数用,隔开,参数内的,使用%2C表示,%使用%25表示

argtype指定对应位置的参数格式,可使用s-字符串,i-整型,f-浮点型,b-布尔型, ,分隔

不指定时默认全部以字符串传递

 

判断 //可嵌套

{if:}{elseif:}{else}{/if}

 

循环 //可嵌套

{for:}{/for}

{@var}

var=

[from= //省略时为1

to=

[step= //省略时为1

 

{foreach:}{/foreach}

{@var.name}

{@var.value}

var=

name= //注册的obj

 

{loop:}{loopelse}{/loop}

{@name.}

name= /已注册的,recordset

[count= /与limit同用时优先级较高

[limit= /a,b表示从recordset的第a行开始显示b条,只有一个值则等同于count

 

{sql:}{sqlelse}{/sql}

{@name.}

{@name.@index} /当前索引

name=

table=

[count= /显示数量,最多100行

[where= /不含where,完整的条件语句,字段名以$p$开头

[field= /以,分割字段名

[limit= /a,b 起始,长度,必须是数值,如果只有一个值,则表示查询前N条

[order= /以,分割排序值

 

 

局部不缓存

<nocache></nocache>

 

该标不可嵌套,不可用在其它标签内部

 

局部长缓存,不受全局缓存时间影响,但当全局缓存未过期时不会更新

该功能针对需要复杂解析或多次读取数据但一般不会更新的部分进行缓存

<cache name=""></cache>

 

name属性必须,且所有局部缓存不能同名