主題: plog首页(index.php?blogId=X)文章有现成的分页处理吗? 作者: ffsword 於 十一月 05, 2005, 10:15:29 下午 plog首页(index.php?blogId=X)文章有现成的分页处理吗?
现在的首页是没有分页的。 主題: Re: plog首页(index.php?blogId=X)文章有现成的分页处理吗? 作者: lss 於 十一月 05, 2005, 11:53:19 下午 記得是 1.1 會加進去,等等吧!
主題: Re: plog首页(index.php?blogId=X)文章有现成的分页处理吗? 作者: ffsword 於 十一月 06, 2005, 10:05:10 上午 能否先提供一下解决思路,俺急用。
我已加的分页问题如下: 页面cache不能刷新,所以点击"下一页",总是在原来的页面,不能跳转,把cache删除后点击"下一页"则可以跳过去(:) 不知我把问题说明白了没有~?) 主題: Re: plog首页(index.php?blogId=X)文章有现成的分页处理吗? 作者: markwu 於 十一月 06, 2005, 10:51:09 上午 能否先提供一下解决思路,俺急用。 我已加的分页问题如下: 页面cache不能刷新,所以点击"下一页",总是在原来的页面,不能跳转,把cache删除后点击"下一页"则可以跳过去(:) 不知我把问题说明白了没有~?) 參考目前 admin 的頁面,裡面已經有把 pager 家進去了,你可以用同放的方式把pager 加到前台 的頁面。 另外,你也可以參考 mobile 這個 plugin,他支援手機顯示的功能,同樣的,他也把 pager 的功能加了進去。 這兩個都是可以參考的程式。 Mark 主題: Re: plog首页(index.php?blogId=X)文章有现成的分页处理吗? 作者: ffsword 於 十一月 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."&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删除后点击分页下拉框则可以跳过去 主題: Re: plog首页(index.php?blogId=X)文章有现成的分页处理吗? 作者: ffsword 於 十一月 28, 2005, 02:26:00 下午 在后台,把模板设置中的cache设置为否,分页搞定!
主題: Re: plog首页(index.php?blogId=X)文章有现成的分页处理吗? 作者: Poker Me 於 十一月 30, 2005, 11:12:46 下午 请问楼主,小弟依葫芦画瓢,但是上传defaultaction.class.php后首页一点变化也没有,不知是不是还要有其他的地方要修改呀!请教请教! :-( :-( :-( :-(
主題: Re: plog首页(index.php?blogId=X)文章有现成的分页处理吗? 作者: ffsword 於 十二月 01, 2005, 08:37:42 上午 在后台管理的
管理设置=>全局设置=>模板设置 中的template_cache_enabled 设置为否 请问楼主,小弟依葫芦画瓢,但是上传defaultaction.class.php后首页一点变化也没有,不知是不是还要有其他的地方要修改呀!请教请教! :-( :-( :-( :-( 主題: Re: plog首页(index.php?blogId=X)文章有现成的分页处理吗? 作者: Poker Me 於 十二月 01, 2005, 01:32:30 下午 也改了但是主页还是什么也没变,从开机清cashed文件,都作了。
我上传了文件defaultaction.class.php到plog/class/action 到底哪错了? :-S :-S :-S 主題: Re: plog首页(index.php?blogId=X)文章有现成的分页处理吗? 作者: Poker Me 於 十二月 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 |