主题 : jeecms3.0看过来,这样的自定义才是彻底的自定义,才是主流!
级别: 秀才
UID: 6688
积分:18 加为好友
威望: 0 精华: 0
主题:2 回复:6
注册时间:2010-05-12
在线时长:0
1#   发表于:2010-05-21 18:03:08  IP:58.143.*.*
首先说明,这种方式不是通过hiberneter*来查数据库,而是直接通过sql语句去查询数据库,目的就是实现用户自定义sql语句,自定义其中的参数,去查询任何表,包括用户新建的表。

要点:
1、新建一个表,用来保存用户自定义标签的查询语句及参数,用户能在后台管理,具体如何操作请参考动易如何后台自定义标签;

2、新建一个专用的Freemarker标签,专门用来处理用户自定义标签,用户在模板里这么调用:
     [@cms.标签名 method=” 用户自定义标签的名称” style=”模板样式” ]

3、新建一个专门的tag_*****.html 的标签模板,专门存放用户自定义标签的样式。因为你们的模板机制,好像每个jeecms自定义标签都对应于唯一的一个模板。而种方式需要给用户处理不同的自定义标签(这里是指按我这方式的标签)。所以这个tag标签模板里,用户需这么定义:
[#if style=”1”]   
[#elseif style=”2”]
   [#list list as item] ${item[0]} [/#list]
[#elseif style=”3”]
[#elseif style=”4”]
[#elseif style=”5”]
[/#if]
这里由于不是用*,所以就用 ${item[0]} 这种方式,用户要显示哪个数据,在哪个位置,让他自己去识别就是。

具体如下:
新建一个UserLabel表,保存用户自定义数据:
字段            数据
自定义标签名    GetMyNews
查询语句        select top 10 from myNews
参数            [type,1][author,‘korven’]
是否分页         0

新建了一个 
<#macro CommLabel  .......  </#macro>


在源代码里相应的DaoImpl中,写对应方法,根据CommLabel 里传过来的method参数,去查找对应的自定义sql语句,并将里面的参数处理,整合成一个完整的sql语句,执行,并返回list对象


在tag_***.html模板中 style="2" 里写入对应的html代码。


调用:在模板中
[@cms.CommLabel method=” GetMyNews” style=”2” ]

过程就是上面这样了,肯定能实现的。希望3.0能加上这个功能,这样才能跟主流的cms有得比。

还可以另外多定义几个这样的标签,如
[@cms.CommAjax method=” GetMyNews” style=”2” ]   返回ajax数据

[@cms.CommXml method=” GetMyNews” style=”2” ]   返回Xml数据

[@cms.CommJson method=”GetMyNews” style=”2” ]   返回Json数据
.......



祝jeecms越来越强大!!!
级别: 白丁
UID: 3
积分:2415 加为好友
威望: 0 精华: 0
主题:23 回复:1614
注册时间:2009-06-02
在线时长:0
2#   发表于:2010-05-31 21:29:51  IP:220.14.*.*
感谢楼主提出这么详细的建议,我们会在以后的版本中考虑的,感谢您的支持!
生命在于折腾!
1 共1页