标签

标签是把复杂的PHP语言转换为容易编写和容易记忆的另一种形式的语言。
KingCMS标签和HTML标签有异曲同工之处,写起来就像HTML代码一样简单,也很容易掌握。
KingCMS标签是以大括号括起来,和模板HTML代码做区分。见下面的对照表:

HTML标签KingCMS标签
<br/>{King:Title/}
<img src="images/logo.gif" alt="图片" />{King:Title size="3" /}
<span class="cls" >
        KingCMS
</span>
{king:portal.article listid='3'}
        {king:title/}
{/king:portal.article}

标签的编写模式

单一对应模式,如: {king:TAG size="18"/}/*必须以 /} 结束,若少了 /,则不会被解析。*/
循环对应模式: {king:TAG ATTRIB='VALUE'}/*VALUE值可以用双引号,也可以用单引号*/
____INNER/*循环显示部分*/
{/king:TAG}/*结束标记,必须和开始标记大小写一致,前面加个/*/

语言标签

用做调用各模块下面的language/LANG.xml语言包中的内容。格式如:

{Lang:system.common.submit /}

其中,lang代表是语言标签,system是代表system模块,common.submit为语言包中的节点路径。

参数标签

参数标签为管理系统参数设置里的各个参数对应的标签,格式如:

{config:system.inst /}

其中config代表是参数标签,system是代表系统模块的参数,inst是对应的安装路径标签,参数标签可在后台看到。

URL参数标签

直接从URL参数中获取值,不区分大小写,写法如下:

{GET:title validate="1"/}/* 如页面地址是 *.php?title=string 的时候,对应的值为"string" */

此标签支持validate属性,即为数据验证。对应关系如下:

1字母和数字,a-zA-Z0-9
2邮件类型,匹配电子邮件地址
3数字和逗号的组合,如:2,3,4
4字母、数字和下划线,不支持中划线
5邮件类型,匹配电子邮件地址
6网址类型
7完整http图片地址或本地图片完整路径
8日期+时间类型,如: 2008-04-12 11:15:18
9日期类型,无时间,如:2009-04-12
136-7位的颜色值,如:FFFFFF或#0000FF
22可以带有符号的数字,如:-100
23第一个字符是字母,后面是由数字、字符和下划线构成的字符串
其他也可以直接写正则表达式进行验证

POST参数标签

直接从POST参数中获取值,用法同上,支持validate属性

{POST:title/}

通用属性

调用文本长度设置(Size)
长度设置,比如调用一个标题中的前20个字符(一个中文单词算2个字符),则设置size="20"。
使用范围:支持几乎所有的标签。
{king:title size="20"/} 从左侧截取指定长度的文本,一个中文字符按两个字符计算
指定缓存设置(Cache)
用cache="缓存名称"来指定重复调用的标签,需要注意的是,cache的值一样的话,就算标签不一样,输出的内容是一样的。
恰当的运用Cache属性是提高模板解析效率的一个捷径。
使用范围:所有标签。
利用PHP函数进行格式化(fun)
对标签返回值,调用PHP函数进行转换,如{king:title/}对应的是值是"   中国   ",调用PHP函数trim进行格式化,
如:{king:title fun='trim'/},输出结果为"中国"(即去掉两侧的空格)。
若用多个函数进行格式化,几个函数之间用逗号分开:{king:description fun='htmlspecialchars,kc_clsnl'/}
编码格式化(FormatStr)
在HTML代码中调用标签的时候,不能直接输出,如: [script] alert('{king:title/}');[/script] 这样调用,大部分情况下会正常,但标题中含有单引号的时候,则javascript代码不能正常工作,就需要用FormatStr属性来转换: [script] alert ('{king:title formatstr="javascript"/}');[/script]
FormatStr属性有如下几种值:
javascript 转换成为javascript代码中可以用的字符
urlencode 转换为URL地址中传递的格式 addslashes 使用反斜线引用字符串 md5 用32位md5对字符串进行加密
值替换(replace)
代码中查找并替换为新值,格式如下: {king:title replace="[FIND]|[NEW STRING]" /} FIND为查找的值,NEW STRING为替换值,中间用垂直线分开,若无垂直线,则查找删除符合查询条件的值。
多个替换之情况,多写replace属性。 {king:title replace="[FIND1]|[NEW STRING1]" replace="[FIND2]|[NEW STRING2]" /}
应用举例: {king:title/}/*海尔洗衣机*/
{king:title replace="洗衣机 | 冰箱" /}/*通过replace属性替换后输出的结果为:海尔冰箱*/
{king:title replace="海尔"/}/*输出结果为:洗衣机*/
空值代替(none)
当输出的值为空值的时候,则输出none指定的值 {king:image/}/*NULL*/ {king:image none='images/none.gif' /}/*images/none.gif*/
调用数量设置(number)
调用文章标题的数量,默认值为10。
使用范围:自定义模型的标签,比如文章系统中调用文章标题的数量。
输出值拆分为数组(split)
输出值拆分为数组
如作者、来源等加链接的时候。
例子中的{king:_source/}是来源,其值为 KingCMS | http://www.kingcms.com/ {king:_source split="|" }
____[a href="{king:_author_2}"]{king:_author_1/}[/a]
{/king:_author}

/*
最后输出值为
[a href="http://www.kingcms.com"]KingCMS[/a]
*/
通过split拆分后,值对应关系如下:
{king:_author/}KingCMS | http://www.kingcms.com/
{king:_author_1/}KingCMS
{king:_author_2/}http://www.kingcms.com/
新模板标签为:原模板标签名{king:_author/}后面加一个下划线和数字。
输出值拆分为循环数组(explode)
输出值拆分为数组,并循环调用
这个功能多用在Tag、关键字等地方 {king:tag explode=","}/*对应的结果假设为:中国,日本,美国 */
____[a href="{king:root/}index.php/tag-{king:tag fun='urlencode'/}{config:system.rewriteend/}"]
________{king:tag/}
____[/a]
{/king:tag}

/* 最后输出值为:
[a href="/index.php/tag-%E4%B8%AD%E5%9B%BD.html"]中国[/a]
[a href="/index.php/tag-%E6%97%A5%E6%9C%AC.html"]日本[/a]
[a href="/index.php/tag-%E7%BE%8E%E5%9B%BD.html"]美国[/a]
*/
注意的是,当标签{king:tag/}被explode拆分为循环数组后,循环体内依然是用{king:tag/}来调用,但其值是拆分后的值。
输出值后插入内容(After)
当当前的标签有值的时候,在输出值之后插入after属性中指定的内容 {king:title after=" 你好! "/}/*当title输出值为CHINA的时候,实际输出的值是:CHINA 你好! */
输出值前插入内容(Before)
当当前的标签有值的时候,在输出值之后插入Before属性中指定的内容 {king:title Before=" 你好! "/}/*当title输出值为CHINA的时候,实际输出的值是: 你好!CHINA */
生成缩略图属性(width,height)
若指定其中任何一个值,则生成对应尺寸的缩略图,并输出缩略图路径。
若同时指定两个值,但不和原图比例一致时,则缩小图片后,取中裁减多余的位图,生成原始比例的图片。
使用范围:图片路径输出标签
Border预定义值边框形状,矩形(rectangle)|圆角矩形(fillet)|斜切矩形(chamfer)
Border-Size整数边框宽度
Border-Color颜色值边框颜色,默认为黑色(#000000)
Border-Margin整数边框到图片的边距
Border-R整数圆角半径,默认为0
Empty预定义值图片外置空的部分形状
矩形(rectangle)|圆角矩形(fillet)|斜切矩形(chamfer)
Empty-Color颜色值填充置空部分的颜色,默认为白色(#FFFFFF)
Empty -Size整数置空的部分尺寸
Empty -R整数半径,当圆角的时候生效
Empty-Filter预定义值滤镜类型:阴影(shadow)
Empty-Filter-color颜色滤镜相关的颜色,默认值为灰色(#666666)
WaterMark图片路径设置水印图片地址,相对于安装目录
WaterMark-X整数插入图像的X轴的坐标,默认为10
WaterMark-Y整数插入图像的Y轴的坐标,默认为10
WaterMark-Opacity整数不透明度,0-100区间值,默认为100,即为不透明
Watermark-Color颜色值定义水印图中的某个颜色为透明色
Text文本文本内容
Text-X整数插入文本的X轴坐标,默认为10
Text-Y整数插入文本的Y轴坐标,默认为20
Text-Size整数文本大小,默认为12
Text-Font字体路径文本调用的字体,特别是中文,必须指定字体,否则为乱码
Text-Color颜色值文本颜色,默认为 黑色(#000000)
Text-angle整数倾斜度,默认为0,即不倾斜
Position预定义值或坐标值缩略图截取方式,其值有以下几种表现方式
  • 默认为从中间截图
  • top: 从顶部开始截图
  • left: 从左侧开始截图
  • right: 从右侧开始截图
  • bottom: 从底部开始截图
  • topleft or lefttop: 从左上角开始截图
  • topright or righttop: 从右上角开始截图
  • leftbottom or bottomleft: 从左下角开始截图
  • rightbottom or bottomright: 从右下角开始截图
  • X,Y: 指定值方式,即Position='-10,-20'
{king:portal.article type="new" number="5"}
<img src="{king:image/*图片标签开始*/
____border='fillet'/*指定为圆角边框*/
____border-color='666666'/*圆角边框的颜色*/
____empty='fillet'/*外部填充部分形状*/
____Empty-Color='#FFFFFF'/*填充颜色*/
____Empty-R='5'/*填充半径*/
____width='100' height='100'/*长宽指定*/
/}"/>
{/king:portal.article}
日期格式化(formatDate)
格式为:{king:DATE formatdate="Ymd"/}
参数对应表如下:
format 字符说明返回值例子
--- ---
d 月份中的第几天,有前导零的 2 位数字 01 到 31
D 星期中的第几天,文本表示,3 个字母 Mon 到 Sun
j 月份中的第几天,没有前导零 1 到 31
l(“L”的小写字母) 星期几,完整的文本格式 Sunday 到 Saturday
N ISO-8601 格式数字表示的星期中的第几天(PHP 5.1.0 新加) 1(表示星期一)到 7(表示星期天)
S 每月天数后面的英文后缀,2 个字符 st,nd,rd 或者 th。可以和 j 一起用
w 星期中的第几天,数字表示 0(表示星期天)到 6(表示星期六)
z 年份中的第几天 0 到 366
星期 --- ---
W ISO-8601 格式年份中的第几周,每周从星期一开始(PHP 4.1.0 新加的) 例如:42(当年的第 42 周)
--- ---
F 月份,完整的文本格式,例如 January 或者 March January 到 December
m 数字表示的月份,有前导零 01 到 12
M 三个字母缩写表示的月份 Jan 到 Dec
n 数字表示的月份,没有前导零 1 到 12
t 给定月份所应有的天数 28 到 31
--- ---
L 是否为闰年 如果是闰年为 1,否则为 0
o ISO-8601 格式年份数字。这和 Y 的值相同,只除了如果 ISO 的星期数(W)属于前一年或下一年,则用那一年。(PHP 5.1.0 新加) Examples: 1999 or 2003
Y 4 位数字完整表示的年份 例如:1999 或 2003
y 2 位数字表示的年份 例如:99 或 03
时间 --- ---
a 小写的上午和下午值 am 或 pm
A 大写的上午和下午值 AM 或 PM
B Swatch Internet 标准时 000 到 999
g 小时,12 小时格式,没有前导零 1 到 12
G 小时,24 小时格式,没有前导零 0 到 23
h 小时,12 小时格式,有前导零 01 到 12
H 小时,24 小时格式,有前导零 00 到 23
i 有前导零的分钟数 00 到 59>
s 秒数,有前导零 00 到 59>
时区 --- ---
e 时区标识(PHP 5.1.0 新加) 例如:UTC,GMT,Atlantic/Azores
I 是否为夏令时 如果是夏令时为 1,否则为 0
O 与格林威治时间相差的小时数 例如:+0200
T 本机所在的时区 例如:EST,MDT(【译者注】在 Windows 下为完整文本格式,例如“Eastern Standard Time”,中文版会显示“中国标准时间”)。
Z 时差偏移量的秒数。UTC 西边的时区偏移量总是负的,UTC 东边的时区偏移量总是正的。 -43200 到 43200
完整的日期/时间 --- ---
c ISO 8601 格式的日期(PHP 5 新加) 2004-02-12T15:19:21+00:00
r RFC 822 格式的日期 例如:Thu, 21 Dec 2000 16:01:07 +0200
U 从 Unix 纪元(January 1 1970 00:00:00 GMT)开始至今的秒数 参见 time()
数字格式化(formatNumber)
指定保留小数点后的数字,如:
{king:price/} => 1003.0
{king:price formatNumber='2'/} => 1,003.00
{king:price formatNumber='4'/} =>1,003.0000
跨站通信(conn)
在应用conn先,首先到工具->跨站通讯下面添加通信。
调用链接的站的链接名称和通信密钥必须和目标站一致,目标站的URL地址可以不写,也可以填写当前的站,这样可以实现互相调用。
需要注意的是通信密钥一定要填写,否则可以通过标签进行数据注入。
可以用在大部分模板标签里,只要指定conn属性值,可以到目标站调用指定的数据。 {king:portal.article type="new" conn="[TEST]"}
____[p][a href="{king:path/}"]{king:title/}[/a][/p]
{/king:portal.article}

{config:system.sitename conn='[TEST]'/}

分页标签(pagelist)

分页标签均支持两种模式,第一种模式是{king:pagelist/},等效于

{king:pagelist}
____{king:standard/}
____{king:Next/}
____{king:jump/}
{/king:pagelist}

第二种模式是直接写完整的形式,内部标签的对应值如下:

{king:pagelist}
____{king:standard/} /*12…345..78形式的分页,自动补充省略符*/
____{king:select/} /*下拉菜单式*/
____{king:Prev/} /*上一页,输出字符为英文Previous,要替换成中文,则用replace属性:{king:prev replace='Previous|上一页'}*/
____{king:Next/} /*下一页,英文为Next,同上替换*/
____{king:First/} /*第一页,英文为First,同上替换*/
____{king:Last/} /*最后一页,英文为Last*/
____{king:full/} /*123456 形式的全部分页,无省略*/
____{king:jump/} /*文本框输入指定页面后回车跳转*/
____{king:pagecount/} /*分页总数*/
____{king:count/} /*记录总数*/
____{king:pid/} /*当前页*/
____{king:rn/} /*每页显示数*/
{/king:pagelist}

特殊参数{Tags}

输出循体内可用的标签及其对应的值

{king:portal.Article type="list"}{Tags}/*特殊参数紧跟着标签开始标记结束后*/
[a href="{king:path/}"]{king:title/}[/a]
{/king:portal.Article}
{Tags}区分大小写,头字母必须为大写,前面不能有多余的空格、换行或Tab等。
此参数标签没有实用价值,仅限于设计模板时,输出循环体内的可用标签及对应值。