歡迎光臨, 訪客. 請先 登入註冊一個帳號.
十一月 26, 2024, 12:09:08 下午
19595 文章 在 3865 主題 由 4579 會員
最新註冊會員: aa123aa1
LifeType 中文開發論壇  |  支援  |  使用與操作  |  [求助]如何summary頁面顯示的文章數量? « 上篇主題 下篇主題 »
頁: [1] 2
作者 主題: [求助]如何summary頁面顯示的文章數量?  (閱讀 69750 次)
bibicall
版主
超級會員
*****
文章: 640


我是豬老大


檢視個人資料 個人網站
« 於: 五月 09, 2005, 12:26:12 上午 »

summary頁面中的最近發表文章部份,只替每個blog顯示一篇文章
如果有新的文章,舊的文章就被取代
雖然已經去將後台週要顯示文章改成15篇
但是我比較想讓最近發表的15篇呈現在summary版面上
而不是每個部落格的最新文章

0.32的修改方式似乎不能在1.0中使用(請參照lss發表過的修改法)
在class/dao裡面找不到文中所說的檔案,所以無從改起啊
請問1.0中有啥方法可以依樣畫葫蘆?
已記錄

我的虛擬主機基本資料如下
Operating system: Linux
Apache version: 1.3.37
PHP version: 4.4.4
MySQL version: 4.1.21-standard
bibicall
版主
超級會員
*****
文章: 640


我是豬老大


檢視個人資料 個人網站
« 回覆文章 #1 於: 五月 09, 2005, 12:37:43 上午 »

我來自問自答了 吐舌頭
修改方式相同
只是檔案的路徑變了
class/summary/dao/summarystats.class.php

希望對大家有幫助囉
已記錄

我的虛擬主機基本資料如下
Operating system: Linux
Apache version: 1.3.37
PHP version: 4.4.4
MySQL version: 4.1.21-standard
markwu
系統管理員
超級會員
*****
文章: 3928


Mark Wu


檢視個人資料 個人網站
« 回覆文章 #2 於: 五月 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
已記錄

bibicall
版主
超級會員
*****
文章: 640


我是豬老大


檢視個人資料 個人網站
« 回覆文章 #3 於: 五月 09, 2005, 12:43:20 上午 »

感謝mark前輩的解答
我試著找出1.0中是不是也有相同的檔案
結果在1.0檔案的路徑變了
所以我只是找出那個檔案,照著lss前輩的方法改
這對不熟悉語法的我來說比較簡單 吐舌頭
也成功的修改了,不過我只修改lss說的那幾行
已記錄

我的虛擬主機基本資料如下
Operating system: Linux
Apache version: 1.3.37
PHP version: 4.4.4
MySQL version: 4.1.21-standard
luckybbdog
新手見習
*
文章: 45


檢視個人資料
« 回覆文章 #4 於: 十一月 19, 2005, 01:36:25 下午 »

找不到楼主所说的lss的文章,连接打不开,楼主能不能贴出来呢?辛苦了。
已記錄
lss
我不是被~拉~~出來的,不要叫我大大!
總版主
超級會員
*****
文章: 1511



檢視個人資料 個人網站
« 回覆文章 #5 於: 十一月 19, 2005, 02:19:01 下午 »

找不到楼主所说的lss的文章,连接打不开,楼主能不能贴出来呢?辛苦了。
這個問題就讓本尊來回答吧 吐舌頭

那個是我舊站上的文章,至於舊站呢?因為資料庫毀了,所以也沒了!也許 google 還有庫存頁面,麻煩自己找一下吧!或者有人曾經轉載過,我也不知道。
已記錄

沒找過 常見問題集或不知道 如何在 LifeType 中文開發論壇發問的人,恕不回答問題
bibicall
版主
超級會員
*****
文章: 640


我是豬老大


檢視個人資料 個人網站
« 回覆文章 #6 於: 十一月 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已於另一篇文章中修正,請自行搜尋參考!
« 最後編輯時間: 十一月 19, 2005, 04:36:14 下午 由 bibicall » 已記錄

我的虛擬主機基本資料如下
Operating system: Linux
Apache version: 1.3.37
PHP version: 4.4.4
MySQL version: 4.1.21-standard
luckybbdog
新手見習
*
文章: 45


檢視個人資料
« 回覆文章 #7 於: 十一月 19, 2005, 10:26:21 下午 »

谢谢几位老大。  微笑
已記錄
chouy
新手見習
*
文章: 34


檢視個人資料
« 回覆文章 #8 於: 七月 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天的.
已記錄

ApacheFriends XAMPP (basic package) version 1.4.16
  + Apache 2.0.54+ MySQL 4.1.14 + PHP 5.0.5 + PHP 4.4.0 + PEAR+ eAccelerator 0.9.3 (PHP5) / 0.9.4-dev(PHP4)  + XAMPP Security 1.  + SQLite 2.8.15+windows servers  2003
markwu
系統管理員
超級會員
*****
文章: 3928


Mark Wu


檢視個人資料 個人網站
« 回覆文章 #9 於: 七月 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
已記錄

chouy
新手見習
*
文章: 34


檢視個人資料
« 回覆文章 #10 於: 七月 13, 2006, 09:24:21 上午 »

1. 請看 /class/summary/dao/summarystats.class.php。
2. 把

引用
$t->subtractSeconds( 7 * 24 * 60 * 60 );

改成

引用
$t->subtractSeconds( 3 * 24 * 60 * 60 );

就可以了。

Mark
我修改后,清除了tmp中的内容,还是显示3天前的如:10 七月 2006 ----13 七月 2006
已記錄

ApacheFriends XAMPP (basic package) version 1.4.16
  + Apache 2.0.54+ MySQL 4.1.14 + PHP 5.0.5 + PHP 4.4.0 + PEAR+ eAccelerator 0.9.3 (PHP5) / 0.9.4-dev(PHP4)  + XAMPP Security 1.  + SQLite 2.8.15+windows servers  2003
markwu
系統管理員
超級會員
*****
文章: 3928


Mark Wu


檢視個人資料 個人網站
« 回覆文章 #11 於: 七月 13, 2006, 10:13:41 上午 »

你不是只要顯示三天內的文章嗎?

Mark
已記錄

chouy
新手見習
*
文章: 34


檢視個人資料
« 回覆文章 #12 於: 七月 13, 2006, 11:08:50 上午 »

你不是只要顯示三天內的文章嗎?

Mark
这是四天的,我改成2也没反映.该文章数为10也没反映
已記錄

ApacheFriends XAMPP (basic package) version 1.4.16
  + Apache 2.0.54+ MySQL 4.1.14 + PHP 5.0.5 + PHP 4.4.0 + PEAR+ eAccelerator 0.9.3 (PHP5) / 0.9.4-dev(PHP4)  + XAMPP Security 1.  + SQLite 2.8.15+windows servers  2003
markwu
系統管理員
超級會員
*****
文章: 3928


Mark Wu


檢視個人資料 個人網站
« 回覆文章 #13 於: 七月 13, 2006, 11:25:56 上午 »

你要不要看一下這個 sql,以及後續的處理程式。

他的目的是讓每一個 blog 只顯示一篇,且再一定時間範圍內。

你這樣自問自答,而我又不知你文章的分佈日期,我實在不知該如何幫你。

Mark
« 最後編輯時間: 七月 13, 2006, 11:28:13 上午 由 markwu » 已記錄

chouy
新手見習
*
文章: 34


檢視個人資料
« 回覆文章 #14 於: 七月 13, 2006, 03:12:31 下午 »

现在好了.
已記錄

ApacheFriends XAMPP (basic package) version 1.4.16
  + Apache 2.0.54+ MySQL 4.1.14 + PHP 5.0.5 + PHP 4.4.0 + PEAR+ eAccelerator 0.9.3 (PHP5) / 0.9.4-dev(PHP4)  + XAMPP Security 1.  + SQLite 2.8.15+windows servers  2003
頁: [1] 2
LifeType 中文開發論壇  |  支援  |  使用與操作  |  [求助]如何summary頁面顯示的文章數量? « 上篇主題 下篇主題 »
    前往: