歡迎光臨, 訪客. 請先 登入註冊一個帳號.
五月 05, 2024, 03:13:14 上午
19595 文章 在 3865 主題 由 4580 會員
最新註冊會員: aa123aa1
LifeType 中文開發論壇  |  開發  |  核心補強  |  plog首页(index.php?blogId=X)文章有现成的分页处理吗? « 上篇主題 下篇主題 »
頁: [1]
作者 主題: plog首页(index.php?blogId=X)文章有现成的分页处理吗?  (閱讀 19286 次)
ffsword
新手見習
*
文章: 14


檢視個人資料
« 於: 十一月 05, 2005, 10:15:29 下午 »

plog首页(index.php?blogId=X)文章有现成的分页处理吗?
现在的首页是没有分页的。
已記錄
lss
我不是被~拉~~出來的,不要叫我大大!
總版主
超級會員
*****
文章: 1511



檢視個人資料 個人網站
« 回覆文章 #1 於: 十一月 05, 2005, 11:53:19 下午 »

記得是 1.1 會加進去,等等吧!
已記錄

沒找過 常見問題集或不知道 如何在 LifeType 中文開發論壇發問的人,恕不回答問題
ffsword
新手見習
*
文章: 14


檢視個人資料
« 回覆文章 #2 於: 十一月 06, 2005, 10:05:10 上午 »

能否先提供一下解决思路,俺急用。

我已加的分页问题如下:
页面cache不能刷新,所以点击"下一页",总是在原来的页面,不能跳转,把cache删除后点击"下一页"则可以跳过去(:) 不知我把问题说明白了没有~?)
已記錄
markwu
系統管理員
超級會員
*****
文章: 3928


Mark Wu


檢視個人資料 個人網站
« 回覆文章 #3 於: 十一月 06, 2005, 10:51:09 上午 »

能否先提供一下解决思路,俺急用。

我已加的分页问题如下:
页面cache不能刷新,所以点击"下一页",总是在原来的页面,不能跳转,把cache删除后点击"下一页"则可以跳过去(:) 不知我把问题说明白了没有~?)

參考目前 admin 的頁面,裡面已經有把 pager 家進去了,你可以用同放的方式把pager 加到前台 的頁面。

另外,你也可以參考 mobile 這個 plugin,他支援手機顯示的功能,同樣的,他也把 pager 的功能加了進去。

這兩個都是可以參考的程式。

Mark
已記錄

ffsword
新手見習
*
文章: 14


檢視個人資料
« 回覆文章 #4 於: 十一月 06, 2005, 02:12:40 下午 »

俺对首页的分页处理是参照 adminpostslistview.class.php ,
defaultaction.class.php 修改代码如下:

<?php

   include_once( PLOG_CLASS_PATH."class/action/blogaction.class.php" );
    include_once( PLOG_CLASS_PATH."class/view/defaultview.class.php" );
    include_once( PLOG_CLASS_PATH."class/net/http/session/sessioninfo.class.php" );
    include_once( PLOG_CLASS_PATH."class/dao/blogs.class.php" );
    include_once( PLOG_CLASS_PATH."class/view/errorview.class.php" );
   include_once( PLOG_CLASS_PATH."class/view/view.class.php" );
   include_once( PLOG_CLASS_PATH."class/plugin/pluginmanager.class.php" );   
   include_once( PLOG_CLASS_PATH."class/data/pager/pager.class.php" );

    /**
     * \ingroup Action
     * @private
     *
     * This class represents the defaut view in our application
     */
   class DefaultAction extends BlogAction
   {

      var $_config;
        var $_date;
        var $_categoryId;
      var $_categoryName;
      var $_userId;
      var $_userName;
      var $_postAmount;
      var $_page;       //add by FFS

      function DefaultAction( $actionInfo, $request )
        {
         $this->BlogAction( $actionInfo, $request );
         // add by FFS (for show page)
         //$this->_page = view::getCurrentPageFromRequest();      
         if ($_REQUEST["page"]=="")
            $this->_page = 1;
         else
            $this->_page = $_REQUEST["page"];
        }

        function validate()
        {
            // value of the Date parameter from the request
            $this->_date = $this->_request->getValue( "Date", -1 );

         $this->_categoryName = $this->_request->getValue( 'postCategoryName' );
            $this->_categoryId = $this->_request->getValue( 'postCategoryId' );
            /* if( $this->_categoryId == '' )
               if( $this->_date == -1 )
                   $this->_categoryId = 0;
                else
                   $this->_categoryId = -1; */
         // **** add ****
         if( $this->_categoryId == '' )
               $this->_categoryId = -1;
         // **** end ***
         $this->_userId = $this->_request->getValue( 'userId', -1 );
         $this->_userName = $this->_request->getValue( 'userName' );

            return true;
        }

        /**
         * Executes the action
         */
        function perform()
        {
           // first of all, we have to determine which blog we would like to see
         $blogId = $this->_blogInfo->getId();

            // fetch the settings for that blog
            $blogSettings = $this->_blogInfo->getSettings();

            // prepare the view
           $this->_view = new DefaultView( $this->_blogInfo,
                                         Array( "categoryId" => $this->_categoryId,
                            "blogId" => $this->_blogInfo->getId(),
                            "categoryName" => $this->_categoryName,
                        "date" => $this->_date,
                        "userName" => $this->_userName,
                        "userId" => $this->_userId ));
                                           
         // check if everything's cached because if it is, then we don't have to
         // do any work... it's already been done before and we should "safely" assume
         // that there hasn't been any change so far
         if( $this->_view->isCached()) {
            return true;
         }

            // if we got a category name instead of a category id, then we
            // should first look up this category in the database and see if
            // it exists
            $categories = new ArticleCategories();
            if( $this->_categoryName ) {
                $category = $categories->getCategoryByName( $this->_categoryName, $this->_blogInfo->getId());
                if( !$category ) {
                    $this->_view = new ErrorView( $this->_blogInfo );
                    $this->_view->setValue( 'message', "error_incorrect_category_id" );
                    $this->setCommonData();
                    return false;
                }
               
                // if everything went fine...
                $this->_categoryId = $category->getId();
            }
         else {
            // we don't do anything if the cateogry id is '0' or '-1'
            if( $this->_categoryId > 0 ) {
               $category = $categories->getCategory( $this->_categoryId, $this->_blogInfo->getId());
               if( !$category ) {
                  $this->_view = new ErrorView( $this->_blogInfo );
                  $this->_view->setValue( 'message', "error_incorrect_category_id" );
                  $this->setCommonData();
                  return false;
               }
            }
         }
         
         // export the category object in case it is needed
            if( isset($category) )
                $this->_view->setValue( "category", $category );         
         

            $users = new Users();

            // if we got a user user id, then we should first look up this id
            // user in the database and see if it exists
            if( $this->_userId > 0) {
                $user = $users->getUserInfoFromId( $this->_userName );
                if( !$user ) {
                    $this->_view = new ErrorView( $this->_blogInfo );
                    $this->_view->setValue( 'message', 'error_incorrect_user_id' );
                    $this->setCommonData();
                    return false;
                }
            }

            // if we got a user name instead of a user id, then we
            // should first look up this user in the database and see if
            // it exists
            if( $this->_userName ) {
                $user = $users->getUserInfoFromUsername( $this->_userName );
                if( !$user ) {
                    $this->_view = new ErrorView( $this->_blogInfo );
                    $this->_view->setValue( 'message', 'error_incorrect_user_id' );
                    $this->setCommonData();
                    return false;
                }
               
                // if everything went fine...
                $this->_userId = $user->getId();
            }

            // export the owner. The owner information should get from blogInfo directly
            $this->_view->setValue( "owner", $this->_blogInfo->getOwnerInfo() );
         
            $t = new Timestamp();
            $todayTimestamp = $t->getTimestamp();
         
            // amount of posts that we have to show, but keeping in mind that when browsing a
            // category or specific date, we should show *all* of them
           
         /* if( $this->_date > 0 || $this->_categoryId > 0 ) {
                $this->_postAmount = -1;
                // also, inform the template that we're showing them all!
                $this->_view->setValue( 'showAll', true );
            }
            else { */
                $this->_postAmount = $blogSettings->getValue( 'show_posts_max' );
                $this->_view->setValue( 'showAll', false );
            /* } */
         
            //
            // :KLUDGE:
            // the more things we add here to filter, the more complicated this function
            // gets... look at this call and look at how many parameters it needs!! 傷心
            //
         
         if( ($blogSettings->getValue( 'show_future_posts_in_calendar')) && ( $this->_date > -1 )) {
            // if posts in the future are to be shown, we shouldn't set a maximum date
            $blogArticles = $this->articles->getBlogArticles( $blogId,
                                                  $this->_date,
                                                  $this->_postAmount,
                                                  $this->_categoryId,
                                                  POST_STATUS_PUBLISHED,
                                                  $this->_userId ,
                                                  0,  // no maxdate
                                                   '', // current search terms
                                                   $this->_page);
            $numPosts = $this->articles->getNumBlogArticles( $blogId,
                                                  $this->_date,
                                                  $this->_postAmount,
                                                  $this->_categoryId,
                                                  POST_STATUS_PUBLISHED,
                                                  $this->_userId ,
                                                  0,  // no maxdate
                                                   '', // current search terms
                                                   $this->_page);
                                                 
                                                
         }
         else {
            $blogArticles = $this->articles->getBlogArticles( $blogId,
                                                  $this->_date,
                                                  $this->_postAmount,
                                                  $this->_categoryId,
                                                  POST_STATUS_PUBLISHED,
                                                  $this->_userId,
                                                  $todayTimestamp,
                                                   '', // current search terms
                                                   $this->_page );
            $numPosts = $this->articles->getNumBlogArticles( $blogId,
                                                  $this->_date,
                                                  $this->_postAmount,
                                                  $this->_categoryId,
                                                  POST_STATUS_PUBLISHED,
                                                  $this->_userId,
                                                  $todayTimestamp,
                                                   '', // current search terms
                                                   $this->_page );
         }

            // if we couldn't fetch the articles, send an error and quit
            if( count($blogArticles) == 0 ) {
               $this->_view = new ErrorView( $this->_blogInfo );
                $this->_view->setValue( 'message', 'error_fetching_articles' );
            }
            else {
               // otherwise, continue
                // the view will take care of cutting the post if we have the "show more"
                // feature enabled or not... we could do it here but I think that belongs
                // to the view since it is presentation stuff... It could also be handled
                // by the template but then it'd make the template a little bit more
                // complicated...
            
            // ---
            // before finishing, let's see if there's any plugin that would like to do
            // anything with the post that we just loaded
            // ---
            $pm =& PluginManager::getPluginManager();
            $pm->setBlogInfo( $this->_blogInfo );
            $pm->setUserInfo( $this->_userInfo );
            $result = $pm->notifyEvent( EVENT_POSTS_LOADED, Array( 'articles' => &$blogArticles ));
            $articles = Array();
            foreach( $blogArticles as $article ) {
               $postText = $article->getIntroText();
               $postExtendedText = $article->getExtendedText();
               $pm->notifyEvent( EVENT_TEXT_FILTER, Array( "text" => &$postText ));
               $pm->notifyEvent( EVENT_TEXT_FILTER, Array( "text" => &$postExtendedText ));
               $article->setIntroText( $postText );
               $article->setExtendedText( $postExtendedText );
               array_push( $articles, $article );
            }
            // add by FFS  (for show page)
            $blog = $this->_blogInfo;
            $blog_id = $blog->getId();
            
            $pager = new Pager( "?blogId=".$blog_id."&amp;page=",
                             $this->_page,
                        $numPosts,
                        $this->_postAmount );
            $this->_view->setValue( 'pager', $pager );
               $this->_view->setValue( 'posts', $articles );
            }

            $this->setCommonData();
            // save the information about the session for later
            $this->saveSession();

            return true;
        }
    }
?>

//*************************************************************************************
出现的问题:

页面cache不能刷新,所以点击分页下拉框,总是在原来的页面,不能跳转,把cache删除后点击分页下拉框则可以跳过去
已記錄
ffsword
新手見習
*
文章: 14


檢視個人資料
« 回覆文章 #5 於: 十一月 28, 2005, 02:26:00 下午 »

在后台,把模板设置中的cache设置为否,分页搞定!
已記錄
Poker Me
新手見習
*
文章: 10


檢視個人資料
« 回覆文章 #6 於: 十一月 30, 2005, 11:12:46 下午 »

请问楼主,小弟依葫芦画瓢,但是上传defaultaction.class.php后首页一点变化也没有,不知是不是还要有其他的地方要修改呀!请教请教!  傷心 傷心 傷心 傷心
已記錄
ffsword
新手見習
*
文章: 14


檢視個人資料
« 回覆文章 #7 於: 十二月 01, 2005, 08:37:42 上午 »

在后台管理的
管理设置=>全局设置=>模板设置
中的template_cache_enabled
设置为否

请问楼主,小弟依葫芦画瓢,但是上传defaultaction.class.php后首页一点变化也没有,不知是不是还要有其他的地方要修改呀!请教请教!  傷心 傷心 傷心 傷心
已記錄
Poker Me
新手見習
*
文章: 10


檢視個人資料
« 回覆文章 #8 於: 十二月 01, 2005, 01:32:30 下午 »

也改了但是主页还是什么也没变,从开机清cashed文件,都作了。
我上传了文件defaultaction.class.phpplog/class/action
到底哪错了? 疑惑 疑惑 疑惑
已記錄
Poker Me
新手見習
*
文章: 10


檢視個人資料
« 回覆文章 #9 於: 十二月 01, 2005, 01:42:04 下午 »

问题解决了,分页显示,不是再首页出现,而是在打开每一个单独的贴子后就看到了,那如果想在首页出现要该哪个文件呀

这篇文章应该顶好东西!

我的首页:
http://www.lastminder.com/plog/index.php?blogId=1

子页(加分页显示)
http://www.lastminder.com/plog/index.php?op=ViewArticle&articleId=20&blogId=1
« 最後編輯時間: 十二月 01, 2005, 01:51:49 下午 由 Poker Me » 已記錄
頁: [1]
LifeType 中文開發論壇  |  開發  |  核心補強  |  plog首页(index.php?blogId=X)文章有现成的分页处理吗? « 上篇主題 下篇主題 »
    前往: