jeecms



jeecms自定义标签

By   tcxurun  |  2013 年 11 月 28 日
最近在研究jeecms,虽然已经有很多标签了,但是由于需要,需要增加新的标签。
比如增加一个标签,可以根据会员组id查出该组下所有的会员。
其中CmsUser  CmsUserDao 及CmsUserMng原系统已有,查询会员方法也有,因此只需编写一个FreeMarker标签类就行了。此标签类需要实现TemplateDirectiveModel接口。
public class CmsMemberListDirective implements TemplateDirectiveModel {
/**
* 模板名称
*/
public static final String TPL_NAME = "member_list";
/**
* @Fields GROUP_ID : 输入参数,会员组ID
*/
private static final String GROUP_ID = "groupId";
/**
* @Fields DISABLED : 输入参数,是否禁用
*/
private static final String DISABLED = "disabled";

public void execute(Environment env, Map params, TemplateModel[] arg2,
TemplateDirectiveBody body) throws TemplateException, IOException {
CmsSite site = FrontUtils.getSite(env);
Integer groupId = getId(params);
Boolean disabled = DirectiveUtils.getBool(DISABLED, params);
List list = cmsUserMng.getList(null, null, null, groupId, disabled, null, null);
Map<String, TemplateModel> paramWrap = new HashMap<String, TemplateModel>(
params);
paramWrap.put(OUT_LIST, DEFAULT_WRAPPER.wrap(list));
Map<String, TemplateModel> origMap = DirectiveUtils
.addParamsToVariable(env, paramWrap);
InvokeType type = DirectiveUtils.getInvokeType(params);
String listStyle = DirectiveUtils.getString(PARAM_STYLE_LIST, params);
if (InvokeType.sysDefined == type) {
if (StringUtils.isBlank(listStyle)) {
throw new ParamsRequiredException(PARAM_STYLE_LIST);
}
env.include(TPL_STYLE_LIST + listStyle + TPL_SUFFIX, UTF8, true);
} else if (InvokeType.userDefined == type) {
if (StringUtils.isBlank(listStyle)) {
throw new ParamsRequiredException(PARAM_STYLE_LIST);
}
FrontUtils.includeTpl(TPL_STYLE_LIST, site, env);
} else if (InvokeType.custom == type) {
FrontUtils.includeTpl(TPL_NAME, site, params, env);
} else if (InvokeType.body == type) {
body.render(env.getOut());
} else {
throw new RuntimeException("invoke type not handled: " + type);
}
DirectiveUtils.removeParamsFromVariable(env, paramWrap, origMap);

}

private Integer getId(Map<String, TemplateModel> params)
throws TemplateException {
Integer id = DirectiveUtils.getInt(GROUP_ID, params);
if (id != null) {
return id;
} else {
throw new ParamsRequiredException(GROUP_ID);
}
}
@Autowired
private CmsUserMng cmsUserMng;
}

写完后需要在在jeecms-context.xml文件中加入CmsChannelStatisticsDirective标签类的bean注入代码。

<bean id="cms_member_list" class="com.jeecms.cms.action.directive.CmsMemberListDirective"/>

接着还要在在jeecms-servlet-front.xml文件中配置:

<entry key="cms_member_list" value-ref="cms_member_list"/>
<entry key="cms_member_page" value-ref="cms_member_page"/>

配完后重启项目,可以在栏目模板中使用标签了。
</pre>
[@cms_member_list groupId = '1']
 [#list tag_list as a]
 <li>${a.username}</li>
 [/#list]
[/@cms_member_list]
<pre>
Category: Java   标签:jeecms
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
jeecms v9.3 正式版 安装包 更新日志 1、栏目添加选择模型模板只选择一个报错 2、内容复用待审核查询报错(开源版) 3、根栏目添加内容报错 4、后台页面样式调整 5、后台编辑器分页问题 7、数据统计今日数据没有问题 8、公众号推送菜单和群发微信菜单获取微信端消息返回处理 9、OSS管理添加appkey_secretId后台未解密导致数据存储错误 10、会员中心留言列表报错 11、工作流节点空值处理 12、手机模板在静态页生成的情况下url错误处理 13、新增百度主动推送 14、内容删除同时删除静态页(含FTP) 15、栏目和内容静态化调整成只生成前10页 16、activation jcaptcha freemarker JAR部分用户反映下载不了,调整pom采用本地jar 17、栏目没有选择模型模板的情况下,发布内容选择不到模型问题处理 JEECMS简介 JEECMS是一款支持栏目模型、内容模型交叉自定义、以及具备支付和财务结算的内容电商为一体内容管理系统:  对于不懂技术的用户来说,只要通过后台的简单设置即可自定义出集新闻管理、图库管理、视频管理、下载系统、文库管理、政务公开、作品管理、产品发布、供求信息、房屋租售、招聘信息、网络问卷调查及留言板于一体的综合性且不失个性化门户网站。  对于技术达人来说,jeecms不仅提供全部源码,而且在研发之初即全面的考虑了二次开发的高效性和代码的高移植性,是一款非常容易上手和二次开发的产品。  JEECMSv8版本是一款集PC互联网、移动互联网和微信网站于一体的网站群管理系统,jeecmsV7不仅可以通过H5自适应的方式实现手机网页模板,还可以采用v7专享的移动端模板,实现了同一个网站PC端和移动端所展现的风格或者内容一致或完全不一样的效果,让网站更适应用户的浏览体验。  JEECMSv8版本新增作者投稿、投稿管理、投稿佣金收益管理和内容赞赏功能,集成了支付宝和微信多种场景多终端的支付方案,为下一波内容电商从业人员提供技术动力。 JEECMSv8支持PC网站、手机网站、微信网站、手机APP和可移动触摸大屏,一套系统即可完成五端一体化管理的网站建设 JEECMS页面展示:     相关阅读 同类推荐:CMS系统
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值