静态标签
静态标签是指KingCMS内部指定的那些PHP常量的标签,比如安装目录的常量参数DIR,在
中调用的时候是{DIR},当前的模板目录的常量参数是T,模板里调用的是{T}。
当多个常量标签需要连续写的时候,如:{DIR}{T},可以简写为:{DIR.T}。
需要注意的是,常量标签必须为大写!
常见的常量标签有:
{DIR} 程序安装目录
{T} 当前模板目录
{TIMEZONE} 时区设置
{PATH_UP} 放置上传文件的主目录
{PATH_CACHE} 放置缓存文件的目录
{ROOT} 网站根目录,磁盘里的路径
{PROD} 程序代号
{VERSION} 程序版本
{VER} 小版本
{TIME} 当前时间
Top↑变量和数组类型标签
变量类型标签,必须为当前页中可以查询到的标签,否则出现PHP错误。
格式为:{$title},{$_GET['title']}
数组类型变量可以简写为:{$_GET[title]}
和KingCMS过去的标签不同的是,前缀改成了美元符,后缀/被简略掉了。
{$title} 当前网页标题
{$keywords} 当前网页关键词
{$description} 当前网页meta简述
Top↑系统参数标签
用来输出系统参数的标签
{$site.name} 网站名称
{$site.title} 网站首页标题
{$site.keywords} 网站首页关键词
{$site.description code='quote'} 网站首页meta简述
{$system.countcode code='html'} 第三方统计代码
{$system.qq} 管理员QQ
{$system.tel} 管理员电话
{$system.beian} 备案号
{$system.image_width} 缩略图最大宽度值
{$system.image_height} 缩略图最大高度值
{$system.bottom code='html'} 网站底部HTML代码
Top↑语句[foreach循环]
foreach循环标签是一种遍历数组简便方法。foreach
仅能用于数组,当试图将其用于其它数据类型或者一个未初始化的变量时会产生错误。
{#foreach($data as $rs)}
标题是:{$rs['title']}
{#endforeach}
Top↑语句[for循环]
{#for($i=1;$i<=10;$i++)}
当前第{$i} 个值
{#endfor}
Top↑语句[if判断]
if判断标签允许按照条件执行代码片段。
{#if ($title=="")}
标题为啥为空呢?
{#endif}
Top↑语句[switch选择]
switch标签和if语句相似,很多场合下需要把同一个变量与很多不同的值做比较,并根据它等于哪个值来执行不同的代码,这正是switch的用处
{#switch ($title)}
{#case 'apple'}
苹果
{#break}
{#case 'bar'}
梨
{#break}
{#default}
标题并不是苹果或梨
{#endswitch}
Top↑语句[break 退出循环][continue 跳过本循环]
break标签结束当前for、foreach或者switch结构的执行
continue标签在循环结构用用来跳过本次循环中剩余的代码并在条件求值为真时开始执行下一次循环。
Top↑引用模板文件[include 和 require]
{#include file='include/top.php'}
file是文件路径,其值为相对于当前被应用的模板目录路径。
被引用的文件也会被正常解析标签。
同时可以用require别名,效果同上:
{#require file='include/top.php'}
Top↑标签属性[size 截取指定长度的文本]
{$title size='10'}
在原{$title}的值中取前10个字符,并且字符长度大于10的时候,补充省略号;size值必须为数字,英文字母按一个字符计算,一个汉字或全角标点符号按两个字符计算,也就是说size='10'代表着显示前5个中文汉字或者10个英文字母。
Top↑标签属性[code 转换数据输出格式]
code属性值有html(同htmldecode)、quote和url(同urlencode),等,各自的功能如下:
html
禁止htmlencode转换,默认是做转换,同:htmldecode
quote
删除双引号等,可以用在html属性值里
url
urlencode转换,传递URL的时候用到,同:urlencode
nl2br
回车符换成
,在html页面中正常显示换行。
ip
把long格式的ip地址转换为 255.255.255.* 样式的地址
{$system.bottom code='html'} 或 {$title code='htmldecode'}
默认输出的所有标签是经过htmlencode转换了的,这样可以安全过滤掉用户提交的不安全的html代码,但一些特殊的文本段是不能转换的,比如页脚html代码、统计器代码或html编辑器中提交的内容,这个时候需要指定一下code值为html;必须要区分的是,这个和先前版本的属性的意义是正好相反。
{$title code='quote'}
当标签在html代码属性里需要用到的时候,指定一下quote,以免在数据中带有双引号等特殊符号的时候,发生错误。也可以用php的htmlspecialchars函数,但这个函数会把双引号换成",并不利于SEO优化。举例:
{$_GET['q'] code='url'} 或 {$title code='urlencode'}
部分浏览器不支持直接传递中文,这个时候需要做urlencode转换,主要用处是传递到url参数时候用到。
搜索关键词
Top↑标签属性[date 日期格式转换]
{$date date="Y-m-d H:i:s"}
格式化时间戳格式的日期为可读的标准日期格式,因为KingCMS的系统中的日期均是以数字形式的时间戳来存储的,输出显示的时候,必须做转换,否则直接读取的是十位数的数字。上面例子中的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)开始至今的秒数
在格式字串中的字符前加上反斜线来转义可以避免它被按照上表解释。如果加上反斜线后的字符本身就是一个特殊序列,那还要转义反斜线。
Top↑标签属性[pagelist 分页标签]
分页标签只适用于列表页、搜索页等需要输出列表的页面里。其对应关系如下:
[$standard] 输出1 2 3 4 5 6 7 8 9 ... 198 199 ,带链接的路径
[$next] 输出Next > ,跳到下一页,并不是最后一页的时候,带上链接
[$previous] 输出 < Previous ,跳到前一页,不是在第一页的时候,带上链接
[$first] 输出 << First ,跳到首页,不是第一页的时候,带上链接
[$last] 输出 Last >> ,跳到最后一页, 不是最后一页的时候,带上链接
[$pcount] 总页数
[$count] 记录总数
[$pid] 当前页数
[$rn] 每页显示记录数
此标签默认值为:
[$standard][$next]
Top↑数据查询[循环读取]
{@res table='%s_user' field='userid,username' where='status=1' order='userid desc'}
读取后的结果赋值给数组变量{$res}中,循环显示{$res}中的内容,即可实现对数据库表的查询输出。
{#foreach ($res as $rs)}
用户名是:{$rs[username]}
{#endforeach}
属性值,标注*的是必须填写的属性值
* table:要读取的数据库表名
field:需要列出的字段名
where:条件检索
order:排序方式
number:调用数量,如果跳过10条读取5条,则: number='10, 5'
Top↑数据查询[单行读取]
{@rs.one table='%s_user' where='status=1' order='userid desc'}
读取后的结果赋值给数组变量{$rs}中,直接输出{$rs}数组里的对应内容。
用户名:{$rs[username]}
用户ID:{$rs[userid]}
属性值,标注*的是必须填写的属性值
* table:要读取的数据库表名
field:需要列出的字段名
where:条件检索
order:排序方式
Top↑数据查询[双值对应读取]
{@res.two table='%s_user' field1='userid' field2='username' where='status=1' order='userid desc'}
读取后的结果赋值给数组变量{$res}中,循环显示{$res}的键值和值即可实现对此数组的输出,此时,field1属性对应的是键值,field2属性对应的是对应值
{#foreach ($res as $userid => $username)}
用户名是:{$username} 用户ID:{$userid}
{#endforeach}
属性值,标注*的是必须填写的属性值
* table:要读取的数据库表名
* field1:作为键值的字段名
* field2:作为键值对应值的字段名
where:条件检索
order:排序方式
number:调用数量,如果跳过10条读取5条,则: number='10, 5'
Top↑数据查询[关联读取]
{@res.join table1='%s_content' table2='%s_user' field1='id,title,url' field2='username' on='userid' where='t1.status=1' order='t1.id desc'}
读取表1的时候,同时读取被关联的表里的其他内容,比如上例循环显示的是content表里的数据,同时根据content表里的userid字段关联读取附表user里的username字段,用来显示对应的用户名。
读取返回值是二维数组,赋给数组变量res:
{#foreach ($res as $rs)}
内容标题:{$rs[title]}
用户名是:{$rs[username]}
链接地址:{$rs[url]}
{#endforeach}
属性值,标注*的是必须填写的属性值,+代表必须同时指定或同时不指定
* table1:要读取的主数据库表名
* table2:被关联读取的附数据库表的名称
+ field1:主数据库表里的字段列表
+ field2:附数据库表里的字段列表
* on:关联两个表用的字段,这个字段两个表必须得存在
where:条件检索,主表字段前面需要补充t1.,附表是t2
order:排序方式,主表字段前面需要补充t1.,附表是t2
number:调用数量,如果跳过10条读取5条,则: number='10, 5'
Top↑数据查询[关联单行读取]
{@rs.one_join table1='%s_content' table2='%s_user' field1='id,title,url' field2='username' on='userid' where='t1.status=1' order='t1.id desc'}
读取表1的时候,同时读取被关联的表里的其他内容,比如上例循环显示的是content表里的数据,同时根据content表里的userid字段关联读取附表user里的username字段,用来显示对应的用户名。
读取返回值是一维数组,赋给数组变量{$rs}:
内容标题:{$rs[title]}
用户名是:{$rs[username]}
链接地址:{$rs[url]}
属性值,标注*的是必须填写的属性值,+代表必须同时指定或同时不指定
* table1:要读取的主数据库表名
* table2:被关联读取的附数据库表的名称
+ field1:主数据库表里的字段列表
+ field2:附数据库表里的字段列表
* on:关联两个表用的字段,这个字段两个表必须得存在
where:条件检索,主表字段前面需要补充t1.,附表是t2
order:排序方式,主表字段前面需要补充t1.,附表是t2
Top↑数据查询[站内搜索引擎]
{@res.search table='%s_content' field='id,title,description,url' fulltext='ft_content' where='status=1' order='temp_score desc,id desc' number='10'}
{#foreach($res as $rs)}
{#endforeach}
{$res_pagelist code='html'}
读取表中的全文检索字段,并返回最符合条件的搜索结果,支持模糊搜索;本查询系统是基于二元分词法开发制作,仅适用于特定的查询应用。
属性值,标注*的是必须填写的属性值
* table:要查询的数据库表名
* field:要显示的字段列表,不能用*,必须填写
* fulltext:全文检索字段
where:条件检索
order:排序方式
number:搜索结果每页显示数,默认为20
pagelist:分页列表结构,默认为
{$standard}{$next}
,详见这里