原因是在原來的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