練功房推薦書單

  • 猛虎出柙雙劍合璧版--最新 OCA / OCP Java SE 7 Programmer 專業認證 (電子書)
  • 流浪教師存零股存到3000萬(全新增修版)(書+DVD)
  • 開始在關西自助旅行(京都‧大阪‧神戶‧奈良)(全新增訂版)
  • 不敗教主的300張股票存股術

[v2.1.8]修正搜尋時無法過濾版面的錯誤 RSS feed
討論區首頁 » JForum中文社群 JForum Chinese Users Community
發表人 內容
andowson

七段學員
[Avatar]

註冊時間: 2007/1/2
文章: 711
來自: 台北
離線
原因是在原來的net.jforum.view.forum.SearchAction類別的buildSearchArgs() method裡request抓的參數名字是forum,而search.htm裡面表單的參數名稱是search_forum,兩者不一致的關係。

解決方法一是:
1.修改表單樣版檔<jforum_installed_path>/templates/default/search.htm

<select class="post" name="search_forum">
改為
<select class="post" name="forum">
2.修改分頁樣版檔<jforum_installed_path>/templates/macros/search_pagination.ftl
將第5行的參數
<#if (searchArgs.forumId > 0)><#assign params = params +"&search_forum="+ searchArgs.forumId/></#if>

修改為
<#if (searchArgs.forumId > 0)><#assign params = params +"&forum="+ searchArgs.forumId/></#if>


解決方法二是:
1.修改net/jforum/view/forum/SearchAction.java的buildSearchArgs() method內這幾行
if (this.request.getParameter("forum") != null) {

args.setForumId(this.request.getIntParameter("forum"));
}



if (this.request.getParameter("search_forum") != null && !"".equals(this.request.getParameter("search_forum"))) {

args.setForumId(this.request.getIntParameter("search_forum"));
}

2.修改<jforum_installed_path>/templates/default/forum_show.htm
將第66行的
[code=html;first-line:66]<input type="hidden" name="forum" value="${forum.id}" />[/code]
修改為
[code=html;first-line:66]<input type="hidden" name="search_forum" value="${forum.id}" />[/code]
3.重新載入JForum或重新啟動Tomcat

另外,如果文章有被搬移過版面,則雖然有指定版面但可能會被意外搜尋到,此時可以透過管理介面再重新完整重頭建立索引一次。
此時也意外發現之前v2.1.8漏翻譯了一個字串,可以將它加進去
en_US.properties:
SearchStats.informationUnavailable = Information unavailable at the moment

zh_TW.properties:
SearchStats.informationUnavailable = \u76EE\u524D\u7121\u6CD5\u5F97\u5230\u4EFB\u4F55\u8CC7\u8A0A

分享經驗 累積智慧
[WWW]
sybell

十級學員

註冊時間: 2011/11/3
文章: 4
離線
先生的第一种办法,按照其修改,但出来一个新问题,当版面不进行过滤时,也就是在所有版面搜索内容时,却Query不到结果。
其解决办法是:还是应该修改SearchAction.java
将代码: if (this.request.getParameter("forum") != null){
args.setForumId(this.request.getIntParameter("forum"));
}

修改为:
if (this.request.getParameter("forum") != null&!"".equals(this.request.getParameter("forum"))) {
args.setForumId(this.request.getIntParameter("forum"));
}

即可。
andowson

七段學員
[Avatar]

註冊時間: 2007/1/2
文章: 711
來自: 台北
離線
感謝您的補充,我查了一下目前最新版的JForum 2.3.2使用的是方法二:

if (this.request.getParameter("search_forum") != null && !"".equals(this.request.getParameter("search_forum"))) {
args.setForumId(this.request.getIntParameter("search_forum"));
}

分享經驗 累積智慧
[WWW]
 
討論區首頁 » JForum中文社群 JForum Chinese Users Community
前往:   
行動版