Thinkphp中结合分页类Page.class.php实现文章内容的分页

标准

文章内容分页一般分为自动分页和手动分页,自动分页比较难处理,手动分页很容易。这里我们讲手动分页。

首先建个测试表,news表,字段如下p:

所谓的手动分页,就是在增加文章内容时,在文章内容中的特定部位插入分页符号,用于标记。手动分页很简单 。

读取的时候进行判断就搞定了。

下面这个方法就搞定 了:

function content(){ $id=intval ( $_GET ['id'] ); if (isset ( $_GET ['p'] ) && $_GET ['p'] != '') { $p = intval ( $_GET ['p'] ); } $Form = M('News'); $result = $Form->where(array('id'=>$id))->find(); $CONTENT_POS = strpos ( $result ['content'], '[page]' );//判断是否存在分页 if ($CONTENT_POS !== false) { $p = $p == NULL ? 1 : $p; $contents = array_filter ( explode ( '[page]', $result ['content'] ) ); //按分页标记分段 $pagenumber = count ( $contents ); //分页数 $page = $this->setPage ( $pagenumber, 1, '页', '' ); $result ['content'] = $contents [$p - 1];//将整个文章内容替换为分页内容 $this->assign ( 'pages', $page->show () ); } $this->display(); }

这里就实现了文章内容的分页了。

上面用到的setPage()方法,是一个简化分页的方法,代码如下:

/** * 简化分页方法 * @方法名:setPage * @param int $sum * @param int $listrow * @param unknown_type $pageStr * @param unknown_type $word * @author wintrue * @2012-9-3上午11:00:04 */ function setPage($sum, $listrow = 15, $pageStr = '用户', $word = '个') { import ( '@.Org.Page' ); $page = new Page ( $sum, $listrow ); $page->setConfig ( 'header', $word . $pageStr ); $page->setConfig ( 'prev', '上一页' ); $page->setConfig ( 'next', '下一页' ); $page->setConfig ( 'first', '首页' ); $page->setConfig ( 'last', '尾页' ); return $page; }

值得注意的一点,文章分页时,page类会传入的每页分页数一定要1,要不然不能正常显示。page.class.php,不用任何修改,直接使用就可以了。

本人才疏学浅,望路过的大侠指点一二。

原创文章,转载请注明出处 by wintrue

4 Comments

发表评论