練功房推薦書單

  • Google!Android 3手機應用程式設計入門(第四版)
  • 賈伯斯傳(軟皮精裝版)
  • 猛虎出閘制霸版:最新OCP Java SE 6 Programmer專業認證(附原始程式碼及範例檔)
  • SCWCD 5 猛虎出閘:Java Web 應用程式專業認證
[修正]讓主題列表時只要該主題內有一篇文章有附件便顯示附件圖示  XML
Forum Index » JForum中文社群 JForum Chinese Users Community
Author Message
andowson

六段學員
[Avatar]

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

原本JForum的設計是依某個主題最後一篇文章是否有附件來決定要不要顯示附件圖示, 但是通常容易讓網友錯過有檔案可以下載的文章,我們可以透過修改SQL語法來修正, 由於我的網站是用PostgreSQL作為後端資料庫, 故我需要修改WEB-INF/config/database/postgresql/postgresql.sql:
TopicModel.selectAllByForumByLimit = SELECT t.*, p.user_id AS last_user_id, p.post_time, (SELECT SUM(p.attach) \
        FROM jforum_posts p \
        WHERE p.topic_id = t.topic_id \
        AND p.need_moderate = 0) AS attach \
        FROM jforum_topics t, jforum_posts p \
        WHERE (t.forum_id = ? OR t.topic_moved_id = ?) \
        AND p.post_id = t.topic_last_post_id \
        AND p.need_moderate = 0 \
        ORDER BY t.topic_type DESC, t.topic_last_post_id DESC \
        OFFSET ? LIMIT ?

TopicModel.selectByUserByLimit = SELECT t.*, p.user_id AS last_user_id, p.post_time, (SELECT SUM(p.attach) \
        FROM jforum_posts p \
        WHERE p.topic_id = t.topic_id \
        AND p.need_moderate = 0) AS attach \
        FROM jforum_topics t, jforum_posts p \
        WHERE p.post_id = t.topic_last_post_id \
        AND t.user_id = ? \
        AND p.need_moderate = 0 \
        AND t.forum_id IN(:fids:) \
        ORDER BY t.topic_last_post_id DESC \
        OFFSET ? LIMIT ?

登入管理介面後清除主題的Cache即可

This message was edited 3 times. Last update was at 2007-09-18 12:20:54


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

六段學員
[Avatar]

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

除了此外,要讓文章一發表時如果有附件就立即能顯示附件圖示,還要修改net.jforum.view.forum.PostAction這個類別的insertSave()和editSave()兩個methods,主要是在新增完附件後,設定Topic物件的hasAttach屬性為true。我們可透過判斷Post物件的hasAttachments()來決定剛發表或修改的文章有沒有附件,另外,為避免被最後一篇發表的文章誤導,我們還要用原本Topc已有的hasAttach()來一起判斷,只要兩個其中一個為true,即表示該主題有附件:
insertSave():
attachments.insertAttachments(p);
t.setHasAttach(t.hasAttach() || p.hasAttachments());

editSave():
attachments.insertAttachments(post);
t.setHasAttach(t.hasAttach() || post.hasAttachments());

不過,這個方法有個bug,就是如果該主題只有一篇文章有附件,然後又把附件都刪光了,還是會顯示有附件。但是,一般來說通常發表有附件的文章後不太會去刪附件,而且重先載入JForum後也會正常顯示,所以這個應該算可以接受的bug吧!

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