<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Latest posts for the topic "[v2.1.7] [新增功能]熱門主題 Hottest Topics"]]></title>
		<link>https://forum.andowson.com/posts/list/7.page</link>
		<description><![CDATA[Latest messages posted in the topic "[v2.1.7] [新增功能]熱門主題 Hottest Topics"]]></description>
		<generator>JForum - http://www.jforum.net</generator>
			<item>
				<title>[v2.1.7] [新增功能]熱門主題 Hottest Topics</title>
				<description><![CDATA[ JForum 2.1.7還沒提供熱門主題這個功能，但有一個功能類似的最新主題，我試著仿照最新主題的邏輯實作了熱門主題這個功能，以下是主要的修改步驟： 
<br>
1. 在WEB-INF/config/database/generic/generic_queries.sql的TopicModel.selectRecentTopicsByLimit下新增一個SQL指令 
<br>
[code=sql] 
<br>
TopicModel.selectHottestTopicsByLimit = SELECT t.*, p.user_id AS last_user_id, p.post_time, 0 AS attach \ 
<br>
 FROM jforum_topics t, jforum_posts p \ 
<br>
 WHERE p.post_id = t.topic_last_post_id \ 
<br>
 AND p.need_moderate = 0 \ 
<br>
 ORDER BY topic_views DESC \ 
<br>
 LIMIT ? 
<br>
[/code] 
<br>
這裡我是以主題的點閱次數來當作熱門排序的基礎。你可以先執行看看是否可以執行成功。 
<br>
<br>
2.將templates/default/recent_thread.htm複製為templates/default/hottest_thread.htm並且將所有的 "recent" 字串替換為 "hottest"。 
<br>
<br>
3.修改WEB-INF/config/urlPattern.properties (將它們加在含有recentTopics字串的設定底下) 
<br>
[code] 
<br>
rss.hottestTopics.0 = 
<br>
<br>
# Hottest Topics 
<br>
hottestTopics.list.0 = 
<br>
hottestTopics.showTopicsByUser.1 = user_id 
<br>
hottestTopics.showTopicsByUser.2 = start, user_id 
<br>
[/code] 
<br>
<br>
4.修改WEB-INF/config/templatesMapping.properties(將它們加在含有recent字串的設定底下) 
<br>
[code] 
<br>
hottest.list = hottest_thread.htm 
<br>
hottest.usertopics.show = user_topics_show.htm 
<br>
[/code] 
<br>
<br>
5.修改WEB-INF/config/modulesMapping.properties(將它們加在含有recentTopics字串的設定底下) 
<br>
[code] 
<br>
hottestTopics = net.jforum.view.forum.HottestTopicsAction 
<br>
[/code] 
<br>
<br>
6.複製src/net/jforum/view/forum/RecentTopicsAction.java為src/net/jforum/view/forum/HottestTopicsAction.java, 並將所有的 "recent" 替換為 "hottest", 所有的 "Recent" 替換為 "Hottest", 所有的 "RECENT" 替換為 "HOTTEST"。 
<br>
<br>
7.修改src/net/jforum/util/preferences/TemplateKeys.java(將它們加在含有recent字串的宣告底下) 
<br>
[code] 
<br>
 public static final String HOTTEST_LIST = "hottest.list"; 
<br>
 public static final String HOTTEST_USER_TOPICS_SHOW = "hottest.usertopics.show"; 
<br>
[/code] 
<br>
<br>
8.修改src/net/jforum/util/preferences/ConfigKeys.java(將它們加在含有recent字串的宣告底下) 
<br>
[code] 
<br>
 public static final String HOTTEST_TOPICS = "topic.hottest"; 
<br>
[/code] 
<br>
<br>
9.修改TopicRepository.java(將它們加在含有recent字串的方法底下) 
<br>
[code] 
<br>
 private static final String HOTTEST = "hottest"; 
<br>
[/code] 
<br>
[code] 
<br>
 /** 
<br>
 * Get all cached hottest topics. 
<br>
 * 
<br>
 */ 
<br>
 public static List getHottestTopics() 
<br>
 { 
<br>
 List l = (List)cache.get(FQN, HOTTEST); 
<br>
<br>
 if (l == null || l.size() == 0 
<br>
 || !SystemGlobals.getBoolValue(ConfigKeys.TOPIC_CACHE_ENABLED)) { 
<br>
 l = loadHottestTopics(); 
<br>
 } 
<br>
<br>
 return new ArrayList(l); 
<br>
 } 
<br>
[/code] 
<br>
[code] 
<br>
 /** 
<br>
 * Add hottest topics to the cache 
<br>
 */ 
<br>
 public static List loadHottestTopics() 
<br>
 { 
<br>
 TopicDAO tm = DataAccessDriver.getInstance().newTopicDAO(); 
<br>
 int limit = SystemGlobals.getIntValue(ConfigKeys.HOTTEST_TOPICS); 
<br>
<br>
 List l = tm.selectHottestTopics(limit); 
<br>
 cache.add(FQN, HOTTEST, new LinkedList(l)); 
<br>
<br>
 return l; 
<br>
 } 
<br>
[/code] 
<br>
<br>
10.修改src/net/jforum/dao/TopicDAO.java(將它們加在含有recent字串的方法宣告底下) 
<br>
[code] 
<br>
 /** 
<br>
 * Selects hottest topics 
<br>
 * 
<br>
 * @param limit The number of topics to retrieve 
<br>
 * @return List 
<br>
 */ 
<br>
 public List selectHottestTopics (int limit) ; 
<br>
[/code] 
<br>
<br>
11.修改src/net/jforum/dao/generic/GenericTopicDAO.java(將它們加在含有recent字串的方法底下) 
<br>
[code] 
<br>
 /** 
<br>
 * @see net.jforum.dao.TopicDAO#selectHottestTopics(int) 
<br>
 */ 
<br>
 public List selectHottestTopics(int limit) 
<br>
 { 
<br>
 PreparedStatement p = null; 
<br>
 try { 
<br>
 p = JForumExecutionContext.getConnection().prepareStatement( 
<br>
 SystemGlobals.getSql("TopicModel.selectHottestTopicsByLimit")); 
<br>
 p.setInt(1, limit); 
<br>
<br>
 List list = this.fillTopicsData(p); 
<br>
 p = null; 
<br>
 return list; 
<br>
 } 
<br>
 catch (SQLException e) { 
<br>
 throw new DatabaseException(e); 
<br>
 } 
<br>
 finally { 
<br>
 DbUtils.close(p); 
<br>
 } 
<br>
 } 
<br>
[/code] 
<br>
<br>
12.修改src/net/jforum/view/forum/common/TopicsCommon.java的deleteTopic()方法(將它們加在TopicRepository.loadMostRecentTopics();的陳述底下) 
<br>
[code] 
<br>
 // Updates the Hottest Topics if it contains this topic 
<br>
 TopicRepository.loadHottestTopics(); 
<br>
[/code] 
<br>
<br>
13.修改src/net/jforum/view/forum/PostAction.java的delete()方法(將它們加在TopicRepository.loadMostRecentTopics();的陳述底下) 
<br>
[code] 
<br>
 TopicRepository.loadHottestTopics(); 
<br>
[/code] 
<br>
<br>
14.修改src/net/jforum/view/forum/ModerationHelper.java的removeTopics()方法及moveTopicsSave()方法(將它們加在TopicRepository.loadMostRecentTopics();的陳述底下) 
<br>
[code] 
<br>
 TopicRepository.loadHottestTopics(); 
<br>
[/code] 
<br>
<br>
15.新增topic.hottest參數到WEB-INF/config/SystemGlobals.properties及WEB-INF/config/jforum-custom.conf 
<br>
[code] 
<br>
topic.hottest = 50 
<br>
[/code] 
<br>
<br>
16.新增ForumBase.hottestTopics到WEB-INF/config/languages/en_US.properties及您的本地語系, 如zh_TW.properties 
<br>
[code] 
<br>
ForumBase.hottestTopics = Hottest Topics 
<br>
[/code] 
<br>
<br>
[code] 
<br>
ForumBase.hottestTopics = 熱門主題 
<br>
[/code] 
<br>
<br>
17.修改templates/default/header.htm, 新增一個熱門主題的超連結(可以由最新主題複製然後再修改) 
<br>
<br>
18.用ant重新編譯 
<br>
<br>
19.重新啟動Tomcat或用manager重新載入JForum]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/50/66.page</guid>
				<link>https://forum.andowson.com/posts/preList/50/66.page</link>
				<pubDate><![CDATA[Sat, 3 Mar 2007 00:52:19]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
			<item>
				<title>回覆:[v2.1.7] [新增功能]熱門主題 Hottest Topics</title>
				<description><![CDATA[ 另外幾個檔案]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/50/72.page</guid>
				<link>https://forum.andowson.com/posts/preList/50/72.page</link>
				<pubDate><![CDATA[Sun, 11 Mar 2007 21:51:30]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
	</channel>
</rss>