練功房推薦書單

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

[v2.1.7] [新增功能]熱門主題 Hottest Topics RSS feed
討論區首頁 » JForum中文社群 JForum Chinese Users Community
發表人 內容
andowson

七段學員
[Avatar]

註冊時間: 2007/1/2
文章: 711
來自: 台北
離線
JForum 2.1.7還沒提供熱門主題這個功能,但有一個功能類似的最新主題,我試著仿照最新主題的邏輯實作了熱門主題這個功能,以下是主要的修改步驟:
1. 在WEB-INF/config/database/generic/generic_queries.sql的TopicModel.selectRecentTopicsByLimit下新增一個SQL指令

TopicModel.selectHottestTopicsByLimit = SELECT t.*, p.user_id AS last_user_id, p.post_time, 0 AS attach \
FROM jforum_topics t, jforum_posts p \
WHERE p.post_id = t.topic_last_post_id \
AND p.need_moderate = 0 \
ORDER BY topic_views DESC \
LIMIT ?

這裡我是以主題的點閱次數來當作熱門排序的基礎。你可以先執行看看是否可以執行成功。

2.將templates/default/recent_thread.htm複製為templates/default/hottest_thread.htm並且將所有的 "recent" 字串替換為 "hottest"。

3.修改WEB-INF/config/urlPattern.properties (將它們加在含有recentTopics字串的設定底下)

rss.hottestTopics.0 =

# Hottest Topics
hottestTopics.list.0 =
hottestTopics.showTopicsByUser.1 = user_id
hottestTopics.showTopicsByUser.2 = start, user_id


4.修改WEB-INF/config/templatesMapping.properties(將它們加在含有recent字串的設定底下)

hottest.list = hottest_thread.htm
hottest.usertopics.show = user_topics_show.htm


5.修改WEB-INF/config/modulesMapping.properties(將它們加在含有recentTopics字串的設定底下)

hottestTopics = net.jforum.view.forum.HottestTopicsAction


6.複製src/net/jforum/view/forum/RecentTopicsAction.java為src/net/jforum/view/forum/HottestTopicsAction.java, 並將所有的 "recent" 替換為 "hottest", 所有的 "Recent" 替換為 "Hottest", 所有的 "RECENT" 替換為 "HOTTEST"。

7.修改src/net/jforum/util/preferences/TemplateKeys.java(將它們加在含有recent字串的宣告底下)

public static final String HOTTEST_LIST = "hottest.list";
public static final String HOTTEST_USER_TOPICS_SHOW = "hottest.usertopics.show";


8.修改src/net/jforum/util/preferences/ConfigKeys.java(將它們加在含有recent字串的宣告底下)

public static final String HOTTEST_TOPICS = "topic.hottest";


9.修改TopicRepository.java(將它們加在含有recent字串的方法底下)

private static final String HOTTEST = "hottest";


/**
* Get all cached hottest topics.
*
*/
public static List getHottestTopics()
{
List l = (List)cache.get(FQN, HOTTEST);

if (l == null || l.size() == 0
|| !SystemGlobals.getBoolValue(ConfigKeys.TOPIC_CACHE_ENABLED)) {
l = loadHottestTopics();
}

return new ArrayList(l);
}


/**
* Add hottest topics to the cache
*/
public static List loadHottestTopics()
{
TopicDAO tm = DataAccessDriver.getInstance().newTopicDAO();
int limit = SystemGlobals.getIntValue(ConfigKeys.HOTTEST_TOPICS);

List l = tm.selectHottestTopics(limit);
cache.add(FQN, HOTTEST, new LinkedList(l));

return l;
}


10.修改src/net/jforum/dao/TopicDAO.java(將它們加在含有recent字串的方法宣告底下)

/**
* Selects hottest topics
*
* @param limit The number of topics to retrieve
* @return List
*/
public List selectHottestTopics (int limit) ;


11.修改src/net/jforum/dao/generic/GenericTopicDAO.java(將它們加在含有recent字串的方法底下)

/**
* @see net.jforum.dao.TopicDAO#selectHottestTopics(int)
*/
public List selectHottestTopics(int limit)
{
PreparedStatement p = null;
try {
p = JForumExecutionContext.getConnection().prepareStatement(
SystemGlobals.getSql("TopicModel.selectHottestTopicsByLimit"));
p.setInt(1, limit);

List list = this.fillTopicsData(p);
p = null;
return list;
}
catch (SQLException e) {
throw new DatabaseException(e);
}
finally {
DbUtils.close(p);
}
}


12.修改src/net/jforum/view/forum/common/TopicsCommon.java的deleteTopic()方法(將它們加在TopicRepository.loadMostRecentTopics();的陳述底下)

// Updates the Hottest Topics if it contains this topic
TopicRepository.loadHottestTopics();


13.修改src/net/jforum/view/forum/PostAction.java的delete()方法(將它們加在TopicRepository.loadMostRecentTopics();的陳述底下)

TopicRepository.loadHottestTopics();


14.修改src/net/jforum/view/forum/ModerationHelper.java的removeTopics()方法及moveTopicsSave()方法(將它們加在TopicRepository.loadMostRecentTopics();的陳述底下)

TopicRepository.loadHottestTopics();


15.新增topic.hottest參數到WEB-INF/config/SystemGlobals.properties及WEB-INF/config/jforum-custom.conf

topic.hottest = 50


16.新增ForumBase.hottestTopics到WEB-INF/config/languages/en_US.properties及您的本地語系, 如zh_TW.properties

ForumBase.hottestTopics = Hottest Topics



ForumBase.hottestTopics = 熱門主題


17.修改templates/default/header.htm, 新增一個熱門主題的超連結(可以由最新主題複製然後再修改)

18.用ant重新編譯

19.重新啟動Tomcat或用manager重新載入JForum
 檔案名稱 GenericTopicDAO.java [Disk] 下載
 描述 GenericTopicDAO.java
 檔案大小 28 Kbytes
 下載次數:  54 次

 檔案名稱 generic_queries.sql [Disk] 下載
 描述 generic_queries.sql
 檔案大小 40 Kbytes
 下載次數:  53 次

 檔案名稱 ConfigKeys.java [Disk] 下載
 描述 ConfigKeys.java
 檔案大小 16 Kbytes
 下載次數:  55 次

 檔案名稱 modulesMapping.properties [Disk] 下載
 描述 modulesMapping.properties
 檔案大小 1 Kbytes
 下載次數:  49 次

 檔案名稱 TemplateKeys.java [Disk] 下載
 描述 TemplateKeys.java
 檔案大小 10 Kbytes
 下載次數:  56 次

 檔案名稱 TopicDAO.java [Disk] 下載
 描述 TopicDAO.java
 檔案大小 9 Kbytes
 下載次數:  53 次

 檔案名稱 HottestTopicsAction.java [Disk] 下載
 描述 HottestTopicsAction.java
 檔案大小 5 Kbytes
 下載次數:  54 次

 檔案名稱 hottest_thread.htm [Disk] 下載
 描述 hottest_thread.htm
 檔案大小 4 Kbytes
 下載次數:  53 次

 檔案名稱 templatesMapping.properties [Disk] 下載
 描述 templatesMapping.properties
 檔案大小 4 Kbytes
 下載次數:  53 次

 檔案名稱 urlPattern.properties [Disk] 下載
 描述 urlPattern.properties
 檔案大小 4 Kbytes
 下載次數:  50 次


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

七段學員
[Avatar]

註冊時間: 2007/1/2
文章: 711
來自: 台北
離線
另外幾個檔案
 檔案名稱 TopicRepository.java [Disk] 下載
 描述 TopicRepository.java
 檔案大小 9 Kbytes
 下載次數:  57 次

 檔案名稱 ModerationHelper.java [Disk] 下載
 描述 ModerationHelper.java
 檔案大小 9 Kbytes
 下載次數:  44 次

 檔案名稱 TopicsCommon.java [Disk] 下載
 描述 TopicsCommon.java
 檔案大小 10 Kbytes
 下載次數:  48 次

 檔案名稱 PostAction.java [Disk] 下載
 描述 PostAction.java
 檔案大小 46 Kbytes
 下載次數:  47 次


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