名词释意
  动态/循环是SDCMS的最灵活多变系统标签。动态/循环标签支持参数设置、条件判断以及函数功能。动态/循环标签分为参数标签、一维循环标签、二维循环标签、分页循环标签四种表现形式。

现有参数标签如下:
{sdcms:include("参数")}
作用:包含文件标签,可以将某个文件内容调用当前文件中。暂不支持站外文件和嵌套。此标签全站通用。
示例:{sdcms:include("sdcms_head.htm")} 其中的“sdcms_head.htm”为参数的替换值。

{sdcms:allclassid(参数)}
作用:显示参数的所有子类别,参数只能为数字。此标签全站通用,可用于循环标签中。
示例:{sdcms:allclassid(1)} 其中“1”为参数的替换值。
一维循环标签
{sdcms:loop table="表名" field="字段1" top="数量" where="查询条件" order="排序依据"} <eof>没有资料</eof> 循环主体 {/sdcms:loop}
作用:根据条件查询数据表,并返回记录集并循环输出。
属性介绍
标签 示例 说明
table table="sd_info" 必需,否则无法查询
field field="id,title" 可选,默认值为:“*”(即全部字段)
where where="where ispass=1" 可选
order order="id desc" 可选,默认值为:“id desc”,为“rnd”时为随机显示
<eof>没有资料</eof> <eof>没有资料</eof> 可选,默认值为空,查询记录为空时显示次内容
top top="10" 可选,默认值为:“10”,为0时查询全部
循环主体 <a href={url}>{title len="30"}</a><br> 必需,可以通过字段标签(形式:{字段名})及Html自由组合

循环主体标签常用函数介绍
函数 示例 说明
len {title len="30"} 显示title字段的值,且只显示前30个字符(一个汉字算2个字符)
date {adddate date="yyyy-mm-dd"}
其中adddate为字段名,结果举例:2009-09-09

作用:格式化日期,只适用于日期型字段
可用参数及说明如下:

参数 作用 示例
week 显示星期 {adddate date="week"},结果:星期一
yyyy 显示年份 {adddate date="yyyy"},结果:2009
yy 显示年份 {adddate date="yy"},结果:09
mm 显示月份 {adddate date="mm"},结果:09
dd 显示日 {adddate date="dd"},结果:09
hh 显示时 {adddate date="hh"},结果:09
ff 显示分 {adddate date="ff"},结果:09
ss 显示秒 {adddate date="ss"},结果:09
m 显示月份 {adddate date="m"},结果:9
d 显示日 {adddate date="d"},结果:9
h 显示时 {adddate date="h"},结果:9
f 显示分 {adddate date="f"},结果:9
s 显示秒 {adddate date="s"},结果:9
function {title function="len"}
可用参数及说明如下:
参数 作用 示例
len 返回长度值 {title function="len"}
说明返回title字段的长度
nohtml 剔除Html {content function="nohtml"}
说明剔除字段content内的html标识
urlencode 字符编码 {title function="urlencode"}
说明如“站长”编码后为:%D5%BE%B3%A4
urldecode 字符解码 {title function="urldecode"}
说明如“%D5%BE%B3%A4”解码后为:站长
keyword,{sdcms:keyword} 关键字高亮 {title function="keyword,{sdcms:keyword}}
说明只用于搜索页面
ubound 返回下标值 {title function="ubound}
说明只用于投票

循环主体IF条件标签介绍
格式:[if 表达式]结果一[else]结果二[end if]
说明:如果表达式成立,那么返回结果一否则返回结果二 其中分支“ [else]结果二 ”可以省略
示例一:[if {adddate date="yyyymmdd"}={date()}]红色[else]蓝色[end if] 说明:如果日期型字段adddate等于系统当前日期,那么输出红色,否则输出蓝色
示例二:[if {adddate date="yyyymmdd"}={date()}]红色[end if] 说明:如果日期型字段adddate等于系统当前日期,那么输出红色

循环主体For条件标签介绍
格式:[for k=0 to {vote function="ubound"}]循环项目[vote={vote}][result={result}][next]
说明:此条件循环标签只用于投票循环,不支持其他数据表。其中循环项目可用标签为:[Percent](输出百分比),[vote](输出数值)
示例:请查阅官方默认模板,不做详细叙述。
二维循环标签
特别说明:二维循环标签等同于一维循环标签,只是表现形式稍有差异(二维循环比一维循环多个@),但优先于一维循环标签。二维循环标签可与一维循环标签配合使用,实现两次循环。
{@sdcms:loop table="表名" field="字段1" top="数量" where="查询条件" order="排序依据"} <@eof>没有资料</@eof> 循环主体 {/@sdcms:loop}
作用:根据条件查询数据表,并返回记录集并循环输出。
属性介绍
标签 示例 说明
table table="sd_info" 必需,否则无法查询
field field="id,title" 可选,默认值为:“*”(即全部字段)
top top="10" 可选,默认值为:“10”,为0时查询全部
where where="where ispass=1" 可选
order order="id desc" 可选,默认值为:“id desc”,为“rnd”时为随机显示
<@eof>没有资料<@/eof> <@eof>没有资料<@/eof> 可选,默认值为空,查询记录为空时显示次内容
循环主体 <a href={@url}>{@title len="30"}</a><br> 必需,可以通过字段标签(形式:{字段名})及Html自由组合

循环主体标签常用函数介绍
函数 示例 说明
len {@title len="30"} 显示title字段的值,且只显示前30个字符(一个汉字算2个字符)
date {@adddate date="yyyy-mm-dd"}
其中adddate为字段名,结果举例:2009-09-09

作用:格式化日期,只适用于日期型字段
可用参数及说明如下:

参数 作用 示例
week 显示星期 {@adddate date="week"},结果:星期一
yyyy 显示年份 {@adddate date="yyyy"},结果:2009
yy 显示年份 {@adddate date="yy"},结果:09
mm 显示月份 {@adddate date="mm"},结果:09
dd 显示日 {@adddate date="dd"},结果:09
hh 显示时 {@adddate date="hh"},结果:09
ff 显示分 {@adddate date="ff"},结果:09
ss 显示秒 {@adddate date="ss"},结果:09
m 显示月份 {@adddate date="m"},结果:9
d 显示日 {@adddate date="d"},结果:9
h 显示时 {@adddate date="h"},结果:9
f 显示分 {@adddate date="f"},结果:9
s 显示秒 {@adddate date="s"},结果:9
function {@title function="len"}
可用参数及说明如下:
参数 作用 示例
len 返回长度值 {@title function="len"}
说明返回title字段的长度
nohtml 剔除Html {@content function="nohtml"}
说明剔除字段content内的html标识
urlencode 字符编码 {@title function="urlencode"}
说明如“站长”编码后为:%D5%BE%B3%A4
urldecode 字符解码 {@title function="urldecode"}
说明如“%D5%BE%B3%A4”解码后为:站长
keyword,{sdcms:keyword} 关键字高亮 {@title function="keyword,{sdcms:keyword}}
说明只用于搜索页面
ubound 返回下标值 {@title function="ubound}
说明只用于投票

循环主体IF条件标签介绍
格式:[@if 表达式]结果一[@else]结果二[@end if]
说明:如果表达式成立,那么返回结果一否则返回结果二 其中分支“ [@else]结果二 ”可以省略
示例一:[@if {@adddate date="yyyymmdd"}={date()}]红色[@else]蓝色[@end if] 说明:如果日期型字段adddate等于系统当前日期,那么输出红色,否则输出蓝色
示例二:[@if {@adddate date="yyyymmdd"}={date()}]红色[@end if] 说明:如果日期型字段adddate等于系统当前日期,那么输出红色

分页循环标签
{sdcms:page table="表名" field="字段1" where="查询条件" pages="当前第几页" order="排序依据"} <eof>没有资料</eof> 循环主体 {/sdcms:page}
作用:根据条件查询数据表,并返回记录集并循环输出。
属性介绍
标签 示例 说明
table table="sd_info" 必需,否则无法查询
field field="id,title" 可选,默认值为:“*”(即全部字段)
where where="where ispass=1" 可选
order order="id desc" 可选,默认值为:“id desc”,为“rnd”时为随机显示
pages pages="{sdcms:pages}" 获取当前第几页,固定格式
<eof>没有资料</eof> <eof>没有资料</eof> 可选,默认值为空,查询记录为空时显示次内容
循环主体 <a href={url}>{title len="30"}</a><br> 必需,可以通过字段标签(形式:{字段名})及Html自由组合

循环主体标签常用函数介绍
函数 示例 说明
len {title len="30"} 显示title字段的值,且只显示前30个字符(一个汉字算2个字符)
date {adddate date="yyyy-mm-dd"}
其中adddate为字段名,结果举例:2009-09-09

作用:格式化日期,只适用于日期型字段
可用参数及说明如下:

参数 作用 示例
week 显示星期 {adddate date="week"},结果:星期一
yyyy 显示年份 {adddate date="yyyy"},结果:2009
yy 显示年份 {adddate date="yy"},结果:09
mm 显示月份 {adddate date="mm"},结果:09
dd 显示日 {adddate date="dd"},结果:09
hh 显示时 {adddate date="hh"},结果:09
ff 显示分 {adddate date="ff"},结果:09
ss 显示秒 {adddate date="ss"},结果:09
m 显示月份 {adddate date="m"},结果:9
d 显示日 {adddate date="d"},结果:9
h 显示时 {adddate date="h"},结果:9
f 显示分 {adddate date="f"},结果:9
s 显示秒 {adddate date="s"},结果:9
function {title function="len"}
可用参数及说明如下:
参数 作用 示例
len 返回长度值 {title function="len"}
说明返回title字段的长度
nohtml 剔除Html {content function="nohtml"}
说明剔除字段content内的html标识
urlencode 字符编码 {title function="urlencode"}
说明如“站长”编码后为:%D5%BE%B3%A4
urldecode 字符解码 {title function="urldecode"}
说明如“%D5%BE%B3%A4”解码后为:站长
keyword,{sdcms:keyword} 关键字高亮 {title function="keyword,{sdcms:keyword}}
说明只用于搜索页面
ubound 返回下标值 {title function="ubound}
说明只用于投票

循环主体IF条件标签介绍
格式:[if 表达式]结果一[else]结果二[end if]
说明:如果表达式成立,那么返回结果一否则返回结果二 其中分支“ [else]结果二 ”可以省略
示例一:[if {adddate date="yyyymmdd"}={date()}]红色[else]蓝色[end if] 说明:如果日期型字段adddate等于系统当前日期,那么输出红色,否则输出蓝色
示例二:[if {adddate date="yyyymmdd"}={date()}]红色[end if] 说明:如果日期型字段adddate等于系统当前日期,那么输出红色
项目 一维循环标签 二维循环标签 分页循环标签
○ 标签字段都支持函数功能
○ IF条件判断
○ For条件判断
备注为支持 为不支持
循环主体和字段标签
  在“一维循环标签”、“二维循环中标签”、“分页循环标签”中都提到了“循环主体”这一名词,这里详细讲解下“循环主体”以及“字段标签”的含义及注意事项。
  ○ 字段标签的表现形式为:{字段名},其中的字段名为所查询数据库表对应的字段名称。但细心的你应该会发现某些字段标签并未在表中找到对应字段,如{I}{J}{Link}等,下面我们会将详细讲解有哪些特殊字段标签及其用法。
  ○循环主体主要为:字段标签和Html代码的集合体,通过字段标签和Html的自由组合来达到我们所想要的表现形式,这个优势是SDCMS之前版本所没有的,也是SDCMS1.2最大的特色功能,只要你稍微了解Html语句的运用,那么一切优秀的表现形式也随即而来!
目前存在如下特殊字段标签:
特殊字段标签 作 用 说 明
{I} 初始值为1,每循环一次加1。如循环后输出:1,2,3,4 可以和IF条件表达式配合使用,只支持一维循环标签的使用
{@I} 初始值为1,每循环一次加1。如循环后输出:1,2,3,4 可以和IF条件表达式配合使用,只支持二维循环标签的使用
{J} 初始值为0,每循环一次加1。如循环后输出:0,1,2,3 可以和IF条件表达式配合使用,只支持一维循环标签的使用
{@J} 初始值为0,每循环一次加1。如循环后输出:0,1,2,3 可以和IF条件表达式配合使用,只支持二维循环标签的使用
{Link} 用于sd_info表时,输出信息的连接
用于sd_comment表时,输出评论的连接
只能用于sd_info和sd_comment两个表的查询,不支持二维循环标签的使用
{@Link} 用于sd_info表时,输出信息的连接
用于sd_comment表时,输出评论的连接
只能用于sd_info和sd_comment两个表的查询,只支持二维循环标签的使用
{tags} 用于sd_info表时,输出Tag标签(带连接) 只能用于sd_info表查询,不支持二维循环标签的使用
{@tags} 用于sd_info表时,输出Tag标签(带连接) 只能用于sd_info表查询,只支持二维循环标签的使用
{classurl} 用于sd_info表时,输出所属类别路径(Url) 同时支持一维循环标签和分页标签,不支持二维标签
{@classurl} 用于sd_info表时,输出所属类别路径(Url) 只支持二维循环标签的使用
{classname} 用于sd_info表时,输出所属类别名称 同时支持一维循环标签和分页标签,不支持二维标签
{@classname} 用于sd_info表时,输出所属类别名称 只支持二维循环标签的使用
一维循环示例
示例语句
{sdcms:loop table="sd_notice" top="5"}<a href="notice/{id}{sdcms:filetxt}" target="_blank" title="{title}" >{title len="30"}</a><br>{/sdcms:loop}
示例解释
  此一维循环语句含义为:查询sd_notice数据表,显示5条记录。
  显示结果(即循环主体)为: 每行显示带连接(新窗口打开)的标题(最大长度显示30个字符)。其中的idtitle均为sd_notice表中的字段名。

二维循环示例
示例语句
{@sdcms:loop table="sd_class" top="4" where="where followid=0" order="ordnum"}
  {sdcms:loop table="sd_info" top="10" where="where classid in({@allclassid}) and ispass=1 and iscreate=1"}
   <eof>没有资料</eof>
    <span [if {adddate date="yyyymmdd"}={date()}]class="red"[end if]>{adddate date="mm.dd"}</span><a href="{link}">{title len="40"}</a><br>
  {/sdcms:loop}
{/@sdcms:loop}
示例解释
  此二维循环和一维循环配合使用:首先查询sd_class数据表,显示4条记录,查询条件where followid=0,并按ordnum升序排列。其中allclassidsd_class数据表中的字段
  在二维查询结果不为空的情况下再执行一维循环(前面我们讲过二维循环优先与一维循环)。一维循环的意义为:查询sd_info表,显示10条记录,查询条件where classid in({@allclassid}) and ispass=1 and iscreate=1
  在查询不到记录的情况下显示“没有资料”,否则:每行显示带连接的标题(最大长度显示40个字符),且当日发表的日期显示为红色。

分页循环示例
示例语句
{sdcms:page table="sd_notice" pages="{sdcms:pages}"}
<eof><div>没有资料</div></eof>
<h1 class="list_title"><a href="{sdcms:root}notice/{id}{sdcms:filetxt}">{title}</a></h1>
<div class="notice_other">作者:<span>{author}</span> 日期:<span>{adddate date="yyyy-mm-dd hh.ff.ss"}</span> 点击:<span>{hits}</span></div>
{/sdcms:page}
<div class="content_page">{sdcms:listpage}</div>
示例解释
  查询sd_notice数据表循环显示主体内容,没有记录时显示“没有资料”,否则显示循环主体的内容。其中为{sdcms:listpage}分页标签。具体效果可以参考公告列表页面