自定义指令


简介

根据自定义指令的主要应用场景不同,分为cds使用和cms使用两类介绍。其中cds使用是在各个站点的前台页面中使用,二次开发需要重点关注的部分;cms使用则是系统后台控制权限的,一般不需要更改。

每一个自定义指令在系统中都有使用案例,具体使用方法可以参考源码中的案例,下面仅是对指令用途、参数、用例进行简单的介绍说明。

1.cds使用

1.1 cald:获取栏目文章列表

参数1:栏目标识,也就是栏目英文名;
参数2:文章列表数量,最多显示多少条;
参数3:参数名,也就是页面中通过那个参数获取查询到的数据,非必填,默认是a;


用例一:栏目标识(暂时只支持栏目英文名获取数据)
#cald(columnName, listSize, paraName)
    <li><a href="#(paraName.getArticleUrl())">#(paraName.title)</a></li>
#end

用例二:不指定数据的参数名,默认使用a
#cald(columnName, listSize)
    <li><a href="#(a.getArticleUrl())">#(a.title)</a></li>
#end


1.2 caldPro:获取栏目文章列表(功能加强版)

参数1:栏目标识,也就是栏目英文名;
参数2:文章列表数量,最多显示多少条;
参数3:参数名,也就是页面中通过那个参数获取查询到的数据, **这里必填** ;
参数4:排序方式,1按创建时间倒叙,2按创建时间正序,3按标题正序,4按标题倒叙。注意所有的排序都是基于置顶在最前面的基础上;


用例:
#cald(columnName, listSize, paraName, orderType)
    <li><a href="#(paraName.getArticleUrl())">#(paraName.title)</a></li>
#end


cald和caldPro的区别
1.cald不支持指定文章列表的排序方式,默认按创建时间倒叙。caldPro支持指定文章列表的排序方式;
2.cald最多支持3个参数,且第三个可不填。caldPro支持且仅支持4个参数,每一个都必填。
使用建议:如果没有排序要求建议使用cald,如果需要指定排序方式,则使用caldPro。

1.3 cld:获取子栏目列表

参数1:栏目标识,也就是栏目英文名;
参数2:参数名,也就是页面中通过那个参数获取查询到的数据,默认是c;


用例一:指定参数
#cld("enName","c")
    <li>#(c.name)</li>
#end

用例二:使用默认参数
#cld("enName")
    <li>#(c.name)</li>
#end


1.4 news:最新资讯,获取指定栏目的最新文章

参数1:栏目标识,支持多个,多个用英文逗号分隔,只获取指定栏目最新的文章;
参数2:文章列表数量,获取多少个最新资讯;
参数3:参数名,也就是页面中通过那个参数获取查询到的数据,非必填,默认是a;


#news(columnNames, listSize, paraName)
	<li><a href="#(paraName.getArticleUrl())">#(paraName.title)</a></li>
#end


1.5 hotNews:热点文章列表,根据点击数获取指定栏目的热点文章

参数1:栏目标识,多个用英文逗号分隔,只获取指定栏目最新的文章,支持根据父栏目获取子栏目;
参数2:文章列表数量,获取多少条记录数;
参数3:参数名,也就是页面中通过那个参数获取查询到的数据,非必填,默认是a;


#hotNews(columnNames, listSize, paraName)
	<li><a href="#(paraName.getArticleUrl())">#(paraName.title)</a></li>
#end


1.6 afld:文章附件列表,根据附件ids获取文章对应附件

参数1:附件ids,附件的id组合,ids直接从文章中获取就行,文章中有这么一个属性;
参数2:参数名,也就是页面中通过那个参数获取查询到的数据,非必填,默认是file;


用例一:
#afld(String files)
    <img src="#(file.path??)">
#end

用例二:
#afld(String files, String paraName)
    <img src="#(paraName.path??)">
#end


1.7 ap:上一篇文章

参数1:文章id;
参数2:栏目id;
参数3:参数名,也就是页面中通过那个参数获取查询到的数据,非必填,默认是ap;


上一篇:
#ap(article.id, article.column, "ap")
    #if(ap)
	<a href="/viewArt?id=#(ap.id)">#(ap.title??)</a>
    #else
	没有了
    #end
#end


1.8 an:下一篇文章

参数1:文章id;
参数2:栏目id;
参数3:参数名,也就是页面中通过那个参数获取查询到的数据,非必填,默认是an;


下一篇:
#an(article.id, article.column, "an")
    #if(an)
	<a href="/viewArt?id=#(an.id)">#(an.title??)</a>
    #else
	没有了
    #end
#end


1.9 cutStr:截取字符串

参数1:需要截取的字符串;
参数2:需要保留的长度;
参数3:截取字符串后拼接的内容,非必填,默认是...


#cutStr(string, length)


2.cms使用

2.1 ped:单个菜单或按钮的权限控制,需要指定具体的actionKey

参数1:用户拥有该actionKey的权限时才会显示该按钮或者菜单;


#ped("actionKey")
	<a>按钮或者菜单</a>
#end


2.2 pld:菜单列表或按钮组的权限控制,指定多个actionKey中的公共部分即可

用例一:
#pld("/cmsRole/")
	<a href="/cmsRole/addRole"></a>
	<a href="/cmsRole/delRole"></a>
#end

用例二:
#pld("/cmsRole/","/cmsAcount/")
	<a href="/cmsRole/addRole"></a>
	<a href="/cmsRole/delRole"></a>
	<a href="/cmsAcount/addAccount"></a>
#end