會員註冊 / 登入  |  電腦版  |  Jump to bottom of page

JForum中文社群 JForum Chinese Users Community » [v2.1.7] [新增功能]熱門主題 Hottest Topics

發表人: andowson, 七段學員
2007-03-03 00:52:19
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
描述 GenericTopicDAO.java
檔案大小 28 Kbytes
下載次數 54 次
[Disk] 下載

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

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

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

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

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

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

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

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

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


發表人: andowson, 七段學員
2007-03-11 21:51:30
另外幾個檔案

檔案名稱 TopicRepository.java
描述 TopicRepository.java
檔案大小 9 Kbytes
下載次數 57 次
[Disk] 下載

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

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

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





會員註冊 / 登入  |  電腦版  |  Jump to top of page