主題: [求助]如何summary頁面顯示的文章數量? 作者: bibicall 於 五月 09, 2005, 12:26:12 上午 summary頁面中的最近發表文章部份,只替每個blog顯示一篇文章
如果有新的文章,舊的文章就被取代 雖然已經去將後台週要顯示文章改成15篇 但是我比較想讓最近發表的15篇呈現在summary版面上 而不是每個部落格的最新文章 0.32的修改方式似乎不能在1.0中使用(請參照lss發表過的修改法) (http://web.nlhs.tyc.edu.tw/plog/post/4/72) 在class/dao裡面找不到文中所說的檔案,所以無從改起啊 請問1.0中有啥方法可以依樣畫葫蘆? 主題: [求助]如何summary頁面顯示的文章數量? 作者: bibicall 於 五月 09, 2005, 12:37:43 上午 我來自問自答了 :-P
修改方式相同 只是檔案的路徑變了 class/summary/dao/summarystats.class.php 希望對大家有幫助囉 主題: [求助]如何summary頁面顯示的文章數量? 作者: markwu 於 五月 09, 2005, 12:38:19 上午 如果你真的只要最後 15 篇,從改 SQL 著手是最快的吧,你看一下 getRecentArticles() 中的 SQL,
1. 把 AND TO_DAYS(NOW()) - TO_DAYS(a.date) < 7 拿掉。因為他只 query 最近 7 天內的文章。但是,注意喔,當你文章很多,這個可是會花很久時間的。 2. 把 $query .= " GROUP BY a.id HAVING COUNT(a.blog_id) = 1 ORDER BY a.date DESC LIMIT 0, $maxPosts"; 改為 $query .= " ORDER BY a.date DESC LIMIT 0, $maxPosts"; 讓他不需再 by blogid 來作 group 3. 照 lss 說的把那一段拿掉。 應該就可以了!這是我用目測的,還沒試過,你可能要自己試試看。 另外,記得清 /tmp 下的 cache,因為你改完程式後,pLog 不知你改了,所以不會幫你清 cache。 Mark 主題: [求助]如何summary頁面顯示的文章數量? 作者: bibicall 於 五月 09, 2005, 12:43:20 上午 感謝mark前輩的解答
我試著找出1.0中是不是也有相同的檔案 結果在1.0檔案的路徑變了 所以我只是找出那個檔案,照著lss前輩的方法改 這對不熟悉語法的我來說比較簡單 :-P 也成功的修改了,不過我只修改lss說的那幾行 主題: Re: [求助]如何summary頁面顯示的文章數量? 作者: luckybbdog 於 十一月 19, 2005, 01:36:25 下午 找不到楼主所说的lss的文章,连接打不开,楼主能不能贴出来呢?辛苦了。
主題: Re: [求助]如何summary頁面顯示的文章數量? 作者: lss 於 十一月 19, 2005, 02:19:01 下午 找不到楼主所说的lss的文章,连接打不开,楼主能不能贴出来呢?辛苦了。 這個問題就讓本尊來回答吧 :-P那個是我舊站上的文章,至於舊站呢?因為資料庫毀了,所以也沒了!也許 google 還有庫存頁面,麻煩自己找一下吧!或者有人曾經轉載過,我也不知道。 主題: Re: [求助]如何summary頁面顯示的文章數量? 作者: bibicall 於 十一月 19, 2005, 04:33:20 下午 幫你估狗了一下
文章來了,請參考 關於summary.php頁面顯示的文章數目 post by lss @ 19 八月, 2004 02:13 bcse兄在中文論壇中提到下面的問題: 我的站台中共有一個網誌,全域設定中 Summany 一頁能顯示的數量我設為 15 篇,但是我的 Summary 頁面始終只有一篇文章,有測試過再開一個網誌,這樣 Summary 就會顯示兩篇文章,請問是否能設定成讓它無論如何都顯示 15 篇文章呢? 這是因為,summary.php頁面裡,Latest Posts部份只替每個blog顯示一篇文章的緣故。如果整個plog網站裡有「許多」(是指很多很多……)blog時,替每個最近有文章的blog顯示出最新的文章摘要其實蠻不錯的。 對於blog不多的網站來說,不分blog把最新的文章顯示出來也不錯。如果要改成不分blog,只要最新的15篇文章(或全域設定的數目),請依照下面方法更改: 修改的檔案:class/dao/summarystats.class.php(註:此路徑為0.32版,1.0路徑為class/summary/dao/summarystats.class.php) 找到下面的code:(第272-299行) 引用 function getRecentArticles( $maxPosts ) { ........ while( ($row = $result->FetchRow()) && ($i < $maxPosts) ) { if (!in_array($row["blog_id"], $blogs)) { $blogs[] = $row["blog_id"]; array_push( $posts, $articles->_fillArticleInformation($row) ); $i++; } } return $posts; } 將紅色的部分刪除或註解掉成為下面的模樣: 引用 function getRecentArticles( $maxPosts ) { ........ while( ($row = $result->FetchRow()) && ($i < $maxPosts) ) { //if (!in_array($row["blog_id"], $blogs)) //{ // $blogs[] = $row["blog_id"]; array_push( $posts, $articles->_fillArticleInformation($row) ); // $i++; //} } return $posts; } 這樣就大功告成了。 這時,回到你的summary.php頁面,Latest Posts部份應該就會不分blog,依時間顯示最近的15篇文章了。 你可以連到本站的summry頁面看看效果。 強烈建議你搭配mark上述的修改一併使用 但,mark上述修改有小錯誤 mark已於另一篇文章中修正,請自行搜尋參考! 主題: Re: [求助]如何summary頁面顯示的文章數量? 作者: luckybbdog 於 十一月 19, 2005, 10:26:21 下午 谢谢几位老大。 :-)
主題: Re: [求助]如何summary頁面顯示的文章數量? 作者: chouy 於 七月 13, 2006, 08:50:08 上午 如果你真的只要最後 15 篇,從改 SQL 著手是最快的吧,你看一下 getRecentArticles() 中的 SQL, 1. 把 AND TO_DAYS(NOW()) - TO_DAYS(a.date) < 7 拿掉。因為他只 query 最近 7 天內的文章。但是,注意喔,當你文章很多,這個可是會花很久時間的。 2. 把 $query .= " GROUP BY a.id HAVING COUNT(a.blog_id) = 1 ORDER BY a.date DESC LIMIT 0, $maxPosts"; 改為 $query .= " ORDER BY a.date DESC LIMIT 0, $maxPosts"; 讓他不需再 by blogid 來作 group 3. 照 lss 說的把那一段拿掉。 應該就可以了!這是我用目測的,還沒試過,你可能要自己試試看。 另外,記得清 /tmp 下的 cache,因為你改完程式後,pLog 不知你改了,所以不會幫你清 cache。 Mark AND TO_DAYS(NOW()) - TO_DAYS(a.date) < 7 这段code在哪个页面里? 是不是<3就是显示3天的. 主題: Re: [求助]如何summary頁面顯示的文章數量? 作者: markwu 於 七月 13, 2006, 08:55:33 上午 1. 請看 /class/summary/dao/summarystats.class.php。
2. 把 引用 $t->subtractSeconds( 7 * 24 * 60 * 60 ); 改成 引用 $t->subtractSeconds( 3 * 24 * 60 * 60 ); 就可以了。 Mark 主題: Re: [求助]如何summary頁面顯示的文章數量? 作者: chouy 於 七月 13, 2006, 09:24:21 上午 1. 請看 /class/summary/dao/summarystats.class.php。 我修改后,清除了tmp中的内容,还是显示3天前的如:10 七月 2006 ----13 七月 2006 2. 把 引用 $t->subtractSeconds( 7 * 24 * 60 * 60 ); 改成 引用 $t->subtractSeconds( 3 * 24 * 60 * 60 ); 就可以了。 Mark 主題: Re: [求助]如何summary頁面顯示的文章數量? 作者: markwu 於 七月 13, 2006, 10:13:41 上午 你不是只要顯示三天內的文章嗎?
Mark 主題: Re: [求助]如何summary頁面顯示的文章數量? 作者: chouy 於 七月 13, 2006, 11:08:50 上午 主題: Re: [求助]如何summary頁面顯示的文章數量? 作者: markwu 於 七月 13, 2006, 11:25:56 上午 你要不要看一下這個 sql,以及後續的處理程式。
他的目的是讓每一個 blog 只顯示一篇,且再一定時間範圍內。 你這樣自問自答,而我又不知你文章的分佈日期,我實在不知該如何幫你。 Mark 主題: Re: [求助]如何summary頁面顯示的文章數量? 作者: chouy 於 七月 13, 2006, 03:12:31 下午 现在好了.
主題: Re: [求助]如何summary頁面顯示的文章數量? 作者: janyo1201 於 十二月 13, 2006, 10:31:33 上午 Dear mark ~~
小弟試了貴站所提供的方法,並無法顯示出15篇文章 而且,在/class/summary/dao/summarystats.class.php中的語法,function 宣告的地方也不一樣!! 小弟不曉得該從何處修改!! 以下為小弟的程式碼: function getRecentArticles( $maxPosts, $ignoreTopic = "", $ignoreText = "" ) { include_once( PLOG_CLASS_PATH . "class/data/timestamp.class.php" ); include_once( PLOG_CLASS_PATH."class/dao/articles.class.php" ); $t = new Timestamp(); $date = $t->getTimestamp(); $prefix = $this->getPrefix(); $query = "SELECT a.id as id, a.id,a.date, a.user_id,a.blog_id, a.status, a.properties, a.num_reads, a.slug FROM {$prefix}articles a, {$prefix}blogs b WHERE a.date >= ".$this->_sevenDaysAgo." AND a.date <= ".$this->_now." AND a.blog_id = b.id AND b.status = ".BLOG_STATUS_ACTIVE." AND a.status = ".POST_STATUS_PUBLISHED; $query .= " ORDER BY a.date DESC LIMIT 0, $maxPosts"; $result = $this->Execute( $query ); if( !$result ) return Array(); $blogs = Array(); $posts = Array(); $i = 0; while( ($row = $result->FetchRow()) && ($i < $maxPosts) ) { if (!in_array($row["blog_id"], $blogs)) { $blogs[] = $row["blog_id"]; array_push( $posts, $this->articles->_fillArticleInformation($row) ); $i++; } } $result->Close(); return $posts; } 主題: Re: [求助]如何summary頁面顯示的文章數量? 作者: musa 於 一月 22, 2008, 03:45:30 下午 修改的檔案:class/dao/summarystats.class.php(註:此路徑為0.32版,1.0路徑為class/summary/dao/summarystats.class.php) 找到下面的code:(第272-299行) 引用 function getRecentArticles( $maxPosts ) { ........ while( ($row = $result->FetchRow()) && ($i < $maxPosts) ) { if (!in_array($row["blog_id"], $blogs)) { $blogs[] = $row["blog_id"]; array_push( $posts, $articles->_fillArticleInformation($row) ); $i++; } } return $posts; } 將紅色的部分刪除或註解掉成為下面的模樣: 引用 function getRecentArticles( $maxPosts ) { ........ while( ($row = $result->FetchRow()) && ($i < $maxPosts) ) { //if (!in_array($row["blog_id"], $blogs)) //{ // $blogs[] = $row["blog_id"]; array_push( $posts, $articles->_fillArticleInformation($row) ); // $i++; //} } return $posts; } 這樣就大功告成了。 這時,回到你的summary.php頁面,Latest Posts部份應該就會不分blog,依時間顯示最近的15篇文章了。 你可以連到本站的summry頁面看看效果。 強烈建議你搭配mark上述的修改一併使用 但,mark上述修改有小錯誤 mark已於另一篇文章中修正,請自行搜尋參考! |