将博cms常用的模板和标签
标签权重:
1、 文件包含标签
2、 基本标签
3、 频道标签
4、 栏目标签
5、 内容标签
文件包含标签
<jcms:include file="~/a.htm" />
或
<jcms:include file="/a.htm" />
基本标签
{site.Dir} 网站目录
<jcms:site.dir/> 网站目录
<jcms:site.url/> 站点URL
<jcms:site.name/> 网站名称
<jcms:site.page.theme/> 模板皮肤路径
<jcms:site.page.nav/> 当前位置导航
<jcms:site.page.title/> 页面标题
<jcms:site.page.keywords/> 页面关键字
<jcms:site.page.description/> 页面简介
频道标签
{$ChannelId} 频道id
{$ChannelName} 频道名称
{$ChannelType} 频道类型
{$ChannelDir} 频道路径
{$ChannelMenu} 栏目导航菜单
{$ChannelItemName} 频道项目名
{$ChannelItemUnit} 频道项目单位
{$ChannelInfo} 频道简介
频道页还具备循环标签,具体可参考官方模板
{$jcms:channel(字段列表)}
<#foreach collection="${contents}" var="field" index="i">…<#/foreach>
{$/jcms:channel}
栏目标签
{$ChannelId} 频道id
{$ChannelName} 频道名称
{$ChannelType} 频道类型
{$ChannelDir} 频道路径
{$ChannelMenu} 栏目导航菜单
{$ChannelItemName} 频道项目名
{$ChannelItemUnit} 频道项目单位
{$ClassId} 栏目id
{$ClassName} 栏目名称
{$ClassInfo} 栏目简介
栏目页还具备循环标签,具体可参考官方模板
{$jcms:class(字段列表)}
<#foreach collection="${contents}" var="field" index="i">…<#/foreach>
{$/jcms:class}
内容标签(以文章为例,其他模型类似)
{$ChannelId} 频道id
{$ChannelName} 频道名称
{$ChannelType} 频道类型
{$ChannelDir} 频道路径
{$ChannelItemName} 频道项目名
{$ChannelItemUnit} 频道项目单位
{$ClassId} 栏目id
{$ClassName} 栏目名称
{$_id} 文章编号
{$_title} 文章标题
{$_img} 标题图片地址
{$_summary} 文章简介
{$_adddate} 文章发表日期
{$_tags} 文章标签
{$_author} 文章作者
{$_editor} 文章编辑
{$_sourcefrom} 文章来源
{$_viewnum} 文章浏览数
{$_getNeightor()} 上、下篇文章
频道循环标签
<jcms:channelloop…></jcms:channelloop>
repeatnum 必填:循环次数
selectids 可选:选择的频道id,用“|”隔开
orderfield 可选:排序字段,默认为pid
ordertype 可选:排序方式,默认为asc
循环体内可以使用频道标签和栏目循环标签。
栏目循环标签
<jcms:classloop…></jcms:classloop>
channelid 必填:频道ID
repeatnum 可选:循环次数,0表示不限制
depth 可选:栏目深度,0本频道所有栏目,如果大于0将表示第几级栏目,-1表示最末级栏目
selectids 可选:用于循环的栏目id,以"|"分隔开
parentid 可选:父级id,如果没有这个参数或参数值为0则不限制
循环体内可以使用的内容循环标签
{$ClassNO}:第n个循环体,从1开始计算
内容循环标签
基本功能
<jcms:contentloop ...></jcms:contentloop>
fields 必填:调用的字段
channelid 可选:频道ID(默认0)
channeltype 可选:频道模型(channelid为0时有效,否则就是选定的频道模型)
classlid 可选:栏目ID,如果为0就取该频道所有的栏目(默认0)
repeatnum 可选:循环记录数(默认10)
istop 可选:是否置顶(默认0,-1:不置顶;1:置顶;0:不约束)
isfocus 可选:是否焦点(默认0,-1:不是焦点;1:是焦点;0:不约束)
isimg 可选:是否带缩略图(默认0,1:带;0:不约束)
orderfield 可选:排序字段(默认id)
ordertype 可选:排序方式(默认desc)
timerange 可选:时间约束(1d:今天,1w:本周,1m:本月,1y:本年度 如果不赋值就是不约束)
wherestr 可选:扩展条件(比如:wherestr="classid in (1,2,3)",等同于SQL的检索条件,但如果遇到“<”和“>”,就用“小于”和“大于”代替,比如wherestr="id小于100")
循环内容模板说明:
<#foreach collection="${contents}" var="field" index="i">…<#/foreach>
是记录的循环标记,循环体内使用${field.title}这样的格式来表示字段值,另外还有几个内置标签:
$_{url} 内容的链接地址
$_{img} 缩略图地址
$_{classname} 内容所属的栏目名称
$_{classlink} 内容所属的栏目地址
$_{channelname} 内容所属的频道名称
$_{channellink} 内容所属的频道地址
实例1:
<jcms:contentloop channelid="1" classid="0" repeatnum="10" fields="title,tcolor">
<ul>
<#foreach collection="${contents}" var="field" index="i">
<li><a href="$_{url}" title="${field.title}" style="color:${field.tcolor}">${field.title}</a></li>
<#/foreach>
</ul>
</jcms:contentloop>
说明:取频道编号为1的前10条内容,字段取标题和标题颜色。
扩展功能(适合复杂循环)
在内容循环中可以使用条件语法(条件语法还可以嵌套),具体如下:
<#if test="${测试条件}">
<#else>
<#/if>
测试条件的函数有如下
equals(obj1, obj2) - 测试obj1 和 obj2 是否相等.
notequals(obj1, obj2) - 测试obj1 和 obj2 是否不相等. 相当于:not(equals(obj1, obj2))
iseven(num) - 测试 num 是否为偶数
isodd(num) - 测试 num 是否为奇数
isempty(string) - 测试 string 长度是否等于0. 相当于:equals(string.Length, 0)
isnotempty(string) - 测试 string 长度是否大于0.
isnumber(num) - 测试 num 是否为数字
notequals(obj1, obj2) - 测试obj1 和 obj2 是否不相等. 相当于:not(equals(obj1, obj2))
iseven(num) - 测试 num 是否为偶数
isodd(num) - 测试 num 是否为奇数
isempty(string) - 测试 string 长度是否等于0. 相当于:equals(string.Length, 0)
isnotempty(string) - 测试 string 长度是否大于0.
isnumber(num) - 测试 num 是否为数字
toupper(string) - 格式化成大写
tolower(string) - 格式化成小写
tolower(string) - 格式化成小写
length(string) - 得到string的长度
isnull(obj) - 测试obj 是否为 null
not(boolvalue) - boolvalue为true时为false,boolvalue为false时为true
iif(booleanExpression, iftruevalue, iffalsevalue) - 形如C#中的 booleanExpression ? iftruevalue : iffalsevalue
例如:
${iif(isodd(i), "bgcolor=yellow", "bgcolor=red")}
iif(booleanExpression, iftruevalue, iffalsevalue) - 形如C#中的 booleanExpression ? iftruevalue : iffalsevalue
例如:
${iif(isodd(i), "bgcolor=yellow", "bgcolor=red")}
cint(value) - 使用 .net类库中的接口Convert.ToInt32)
cdouble(value) - 将值格式为成 double型
cdate(value) - 将值格式为成 DateTime型. 例如: ${cdate("2005-5-1")}
cdatestring(value, string1) - 使用指定的string1格式将当前值格式化. 例如: ${cdatestring("2005-5-1","yy-MM-dd")}
gt(obj1, obj2) - 当obj1大于obj2时为true
lt(obj1, obj2) - 当obj1小于obj2时为true
cdouble(value) - 将值格式为成 double型
cdate(value) - 将值格式为成 DateTime型. 例如: ${cdate("2005-5-1")}
cdatestring(value, string1) - 使用指定的string1格式将当前值格式化. 例如: ${cdatestring("2005-5-1","yy-MM-dd")}
gt(obj1, obj2) - 当obj1大于obj2时为true
lt(obj1, obj2) - 当obj1小于obj2时为true
is - 例如: ${obj1 is obj2}.
isnot - 例如: ${obj1 isnot obj2}
and -例如: ${obj1 not obj2} 类似C#中的: &&
or - 类似C#中的:||
lt, lte, gt, gte - 分别类似 ("<"、"<="、">"、">=").
isnot - 例如: ${obj1 isnot obj2}
and -例如: ${obj1 not obj2} 类似C#中的: &&
or - 类似C#中的:||
lt, lte, gt, gte - 分别类似 ("<"、"<="、">"、">=").
实例2:
<jcms:contentloop channelid="1" classid="0" repeatnum="10" fields="[title],[summary]" orderfield="viewnum">
<#foreach collection="${contents}" var="field" index="i">
<#if test="${i lt 4}">
<#if test="${equals(i,1)}">
<dt><span class="ranknum red">${i}</span><a href="$_{url}" title="${field.title}">${field.title}</a></dt>
<dd><#cutstring len="40">${field.summary}<#/cutstring>...<a href="$_{url}" target="_blank">[阅读全文]</a></dd>
<#else>
<dt><span class="ranknum red">${i}</span><a href="$_{url}" target="_blank" title="${field.title}">${field.title}</a></dt>
<#/if>
<#else>
<dt><span class="ranknum">${i}</span><a href="$_{url}" target="_blank" title="${field.title}">${field.title}</a></dt>
<#/if>
<#/foreach>
</jcms:contentloop>
说明:
1、 取频道编号为1的前10条内容,字段取标题和简介;
2、 定义了ranknum、red等几个css样式;
3、 前1条记录的前缀样式是ranknum red,后3条记录的前缀样式是ranknum;
4、 如果是第1条记录,则有简介,否则不带简介。
5、 其中i表示当前循环的次数