練功房推薦書單

  • Google!Android 3手機應用程式設計入門(第四版)
  • 賈伯斯傳(軟皮精裝版)
  • 猛虎出閘制霸版:最新OCP Java SE 6 Programmer專業認證(附原始程式碼及範例檔)
  • SCWCD 5 猛虎出閘:Java Web 應用程式專業認證
[v2.1.7] [新增功能]熱門主題 Hottest Topics  XML
Forum Index » JForum中文社群 JForum Chinese Users Community
Author Message
andowson

六段學員
[Avatar]

Joined: 2007-01-02 22:20:40
Messages: 652
Location: 台北
Offline

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
 Filename GenericTopicDAO.java [Disk] Download
 Description GenericTopicDAO.java
 Filesize 28 Kbytes
 Downloaded:  54 time(s)

 Filename generic_queries.sql [Disk] Download
 Description generic_queries.sql
 Filesize 40 Kbytes
 Downloaded:  53 time(s)

 Filename ConfigKeys.java [Disk] Download
 Description ConfigKeys.java
 Filesize 16 Kbytes
 Downloaded:  55 time(s)

 Filename modulesMapping.properties [Disk] Download
 Description modulesMapping.properties
 Filesize 1 Kbytes
 Downloaded:  49 time(s)

 Filename TemplateKeys.java [Disk] Download
 Description TemplateKeys.java
 Filesize 10 Kbytes
 Downloaded:  56 time(s)

 Filename TopicDAO.java [Disk] Download
 Description TopicDAO.java
 Filesize 9 Kbytes
 Downloaded:  53 time(s)

 Filename HottestTopicsAction.java [Disk] Download
 Description HottestTopicsAction.java
 Filesize 5 Kbytes
 Downloaded:  54 time(s)

 Filename hottest_thread.htm [Disk] Download
 Description hottest_thread.htm
 Filesize 4 Kbytes
 Downloaded:  53 time(s)

 Filename templatesMapping.properties [Disk] Download
 Description templatesMapping.properties
 Filesize 4 Kbytes
 Downloaded:  53 time(s)

 Filename urlPattern.properties [Disk] Download
 Description urlPattern.properties
 Filesize 4 Kbytes
 Downloaded:  50 time(s)

This message was edited 14 times. Last update was at 2007-08-19 15:07:30


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

六段學員
[Avatar]

Joined: 2007-01-02 22:20:40
Messages: 652
Location: 台北
Offline

另外幾個檔案
 Filename TopicRepository.java [Disk] Download
 Description TopicRepository.java
 Filesize 9 Kbytes
 Downloaded:  57 time(s)

 Filename ModerationHelper.java [Disk] Download
 Description ModerationHelper.java
 Filesize 9 Kbytes
 Downloaded:  44 time(s)

 Filename TopicsCommon.java [Disk] Download
 Description TopicsCommon.java
 Filesize 10 Kbytes
 Downloaded:  48 time(s)

 Filename PostAction.java [Disk] Download
 Description PostAction.java
 Filesize 46 Kbytes
 Downloaded:  47 time(s)

This message was edited 2 times. Last update was at 2007-03-11 22:00:31


分享經驗 累積智慧
[WWW] [MSN]
 
Forum Index » JForum中文社群 JForum Chinese Users Community
Go to: