CMS4J2008 隐藏文章被搜索出来的解决办法

这是我在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>

就写这些吧,希望能够对大家有帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
最新消息,CMS4J 现已推出 基于java / jsp技术开发的网站管理系统 CMS4J 2008 免费版 ,并且又推出了一套同样基于java / jsp技术开发的博客系统! CMS4J 2008 革新了原有的系统架构,开发了更为专业、便捷的后台管理界面,同时,还支持了网站集群的架构以及多数据库的支持,功能体系也十分完整,属于java / jsp领域内比较优秀的CMS! 一、CMS4J 2008 系统介绍 CMS4J 是 JAVA / JSP 版网站管理系统(Content Manage System For Java)的简称,读作 “CMS For J”; 国内 JAVA版网站管理系统 的领航者,依托于 JAVA 技术,专注于网站内容管理; CMS4J绝非国外一些开源产品的改造版,我们秉承用户本土化的原则,切身体验国内CMS系统的应用现状与实际需求,为中小企业量身定做,CMS4J项目在立项时,就已经立下了以下四大目标:   [目标 1]: 不编程,做动态网站 要让网站设计师、美工也会做动态网站,动态网站不再是程序员的专长;   [目标 2]: 高扩展,插件式架构 系统基于Plug-in结构,所有模块均插件化, 良好的二次开发接口;   [目标 3]: 小投资,低成本运营 让网站可以低成本运营,绝对不允许存在第三方不必要的软件开支;   [目标 4]: 大应用,分布式部署 立足日访量为1至100百万网站的应用,向千万级大型综合门户应用迈进; 二、特 性 ************************************************************** * 基于JAVA(JSP)技术 ************************************************************** 有人做过试验,对这三种语言分别做循环性能测试及存取Oracle数据库测试。 在循环性能测试中,JSP只用了令人吃惊的四秒钟就结束了20000*20000的循环。而ASP、PHP测试的是2000*2000循环(少一个数量级),却分别用了63秒和84秒。(参考PHPLIB)。 数据库测试中,三者分别对 Oracle 8 进行 1000 次 Insert,Update,Select和Delete: JSP 需要 13 秒,PHP 需要 69 秒,ASP则需要 73 秒。 ************************************************************** * 无需编程 ************************************************************** 在现有先进的MVC思想上,进行了网站应用贴身分析,并对MVC三层中的V层(View层,即展现层)进行了增强设计; 采用了JAVA所特有的Taglib技术,完美的实现了“无需编程”这一设想。 基于Dreamweaver的CMS4J网站开发插件,使CMS4J的实现可视化架站。 [实例对比 CMS4J的代码 与 传统语言代码] http://www.cms4j.com/blueprint/index.html#VS ************************************************************** * 反应迅速 ************************************************************** 自动生成静态页(HTML,SHTML) 支持动态访问(.jsp)与静态访问(.shtml)两种访问模式,动静结合,收缩自如 三个层次的缓存(Cache): 静态页面缓存、内存镜像缓存、数据库连接缓存 ************************************************************** * 插件式的二次开发 ************************************************************** cms4j功能模块化,支持管理插件(Plug-in)“热插拨” 网站二次开发更简易 ************************************************************** * 开发效率高 ************************************************************** “元件”式开发思想,使得种种需要重复利用的代码块“元件”化,彻底的实现代码的复用 我们承诺,使用CMS4J可以使您的动态网站开发效率 至少提高50 % ! ************************************************************** * 高可配置性、插件式的二次开发 ************************************************************** 无须重新编译CMS4J整体应用程序即可新增功能,实现个性化需求; 无须CMS4J其它任何模块的源代码即可新增功能,代码依赖性小,松耦合; 在现有构件基础之上,可以重整应用规则,从而应变商务规则的频繁变更; 二次开发可独立,不受限于现有系统结构,扩展性高。 ************************************************************** * 安装简易 ************************************************************** 从系统的安装到最终的配置,CMS4J提供了全程可视化配置服务 无论您是试用还是正式用户,我们均提供相应的技术支持。 ************************************************************** * 分布式应用 ************************************************************** 可以做到在一个信息体下,“管理”与“发布”的独立。 可将系统服务层、控制层、数据层三个层次部署在不同的位置上 ************************************************************** * 更多 敬请访问http://www.cms4j.com ************************************************************** CMS4J还有更多特性提供给您,如自定义Cache、单点登录(SSO)实现、网站多模板管理等等 ************************************************************** * CMS4J 版权所有 2004-2008 * Http://www.cms4j.com **************************************************************
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值