CMS4J2008 隐藏文章被搜索出来的解决办法
来源:互联网 发布:win10自带录屏软件 编辑:程序博客网 时间:2024/06/05 00:43
这是我在CSDN的处女作,原来一直在QQ空间里写东西的,今天换换地方,也来混混高级群。希望能为大家提供帮助。废话不多说,进入正题。
前阵子用了java cms的一个模版,cms4j2008是免费版的,这个模板用起来还是不错的。但是发现他的搜索上,有一个非常致命的问题,就是如果我把后台的显示时间调整了,但是在搜索时,依然会出现搜出来的情况。见图1:
这里的显示时间,是设定文章到了这个时间才能看见用的。在使用<cms4j:artical>这个标签获得文章全部信息时,会读取这个属性,这样文章就不显示出来了,而且他还加了判断,如果不到就将页面全部信息替换为空(感觉给用户个提示更好!)。
但是搜索时,<cms4j:site_search>这个标签没用获取这个属性,而是直接将全部信息全部得到,并显示出来,造成了下面的结果
如图2:
这是一个严重的问题,我觉得应该在搜索时,加上时间判断,这样的问题不该出现在cms4j的身上啊,而且08,2010版的都有这个问题。
下面说一下解决办法:
由于cms4j已经把相应的文件打成了jar包,所以重写源码有些困难了,所以我的方法是用js来解决。
方法1(失败)
我想在search_result_2.jsp这个页面上下手,让他搜出来信息后,加以判断,是现在时间之前的显示,不是的用style = "display:none"来隐藏它,具体代码就不贴了,因为虽然实现了效果,但是分页的时候,由于算出了count,所以造成前几页的数据都是空的,但是页码还在,失败告终!
方法2(成功)
第一个失败了,只好在搜索上进行下手了,我发现他在搜索时用url传参数时,能传递一个enddate的参数,就是搜索时的日期选择的结束时间。如图3:
于是我想到了一个方法,就是对参数就行判断,思路是(有点小问题,后面说)
1:如果用户没设置,则传递一个当前日期给SearchResult
2:如果用户选择了,而且时间是小于或是等于当前时间的话,传用户的
3:如果用户选择了,而且时间是大于当前时间的话,传当前时间
但是设计完之后,发现日期上有问题了,他搜索出来的时间比我的早一点,比如今天16,但是他最多
显示出15号的,而16号的却不能显示,所以又在当前日期上增加了一天。
代码如下:
先修改index.jsp的页面
1、搜索的位置增加一个获得当前日期的方法:
<td><%Calendar a = Calendar.getInstance();a.add(Calendar.DATE, +1);java.util.Date now = a.getTime();SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");%></td>
2、在url传参数的地方,加上这个参数:
onClick="location.href='SearchResult.jsp?cluster_node_id=<%=cluster_node_id%>&enddate=<%= now%>&s=' + document.CMS4JSearchForm.SEARCH_WORD.value;">
3、头部加上调用的类
<%@ page import="java.text.*,java.util.*"%>
再修改/symbol/fullsearch/search_result_2.jsp这个文件
1、在<cms4j:class>里增加一个隐藏的td,获得当前时间的
<td id = "nowTime" style = "display:none"><%Calendar a = Calendar.getInstance();a.add(Calendar.DATE, +1);Date now = a.getTime();SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");out.println(fmt.format(now));%></td>
2、再在头部添加如下的js
<script>
function f() {
var old = eval(document.getElementById('endDate')).value; //得到用户的结束时间
var now = document.getElementById('nowTime').innerText;//得到td的值也就是当前时间
if (old != null) {
var dA=new Date(old.replace(/-/,"/"));//
dB=new Date(now.replace(/-/,"/"));
if(Date.parse(dA) <= Date.parse(dB)){
} else {
eval(document.getElementById('endDate')).value = now;
var Btn = document.getElementById('Submit2');
Btn.onclick();
}
}else {
eval(document.getElementById('endDate')).value = now;
}
}
</script>
最后修改Search.jsp
1、在<body onLoad="pageInit();f()">中调f()方法就可以了
额外补充一点,如果你不想你的内容被看见的话,搜索时,修改搜索的条件
在SearchResulet。jsp里(调成title就是只搜索文章的标题)
<jsp:param name="SEARCH_FIELD" value="title"></jsp:param>
还有要把/symbol/fullsearch/search_result_2.jsp 成这样的
<span class="page_class_content"><span class="STYLE9"></span></span>
就写这些吧,希望能够对大家有帮助。
- CMS4J2008 隐藏文章被搜索出来的解决办法
- oracle11g空表导不出来的解决办法
- VirtualBox的菜单栏被隐藏的解决办法
- 隐藏MFC对话框DoModal出来的窗口
- 让搜索出来的关键字变红色
- 搜索出来的字体添加颜色
- dedecms 搜索结果页中文章标题长度显示不全的解决办法
- windows XP 语言栏调不出来的解决办法
- C# 画图画不出来的解决办法
- vc编译出来的exe太大----解决办法
- 键盘闪现出来又消失的解决办法
- 弹不出来错误信息的解决办法
- Webview加载不出来的解决办法
- 字体图标显示不出来的解决办法
- 搜索关键字 搜索出来的关键字显示红色
- 用CSS来隐藏不希望被打印出来的元素
- windows moblie wtl 从CStdDialogImpl继承的窗口,domodal出来,任务栏中的叉,点了叉不知道触发了什么事件。临时解决办法,隐藏它
- 文件夹隐藏不被搜索
- JAVA中用于处理字符串的“三兄弟”
- windows下重置mysql5的root密码
- uva oj 714解题报告
- 优化的ms sql server分页sql语句
- 如何打击垃圾信息.
- CMS4J2008 隐藏文章被搜索出来的解决办法
- 无线时代,是不是台式机也不用网线了
- 111
- excel中提取箱单中的箱数
- 常用正则表达式
- ASP.NET控件使用——Button中关于CommandName 和 CommandArgument 的理解?????
- 指定行号后查找字符串
- STL中的traits机制
- Id——3D游戏之父john carmack