长内容分页,解决 [ 新手入门 ]
关于长内容分页,好多人都愁怎么弄,我把我写的代码拿出来让大家批评下 首先谢了一个截取的方法 我放在model里了
//$ptext = '<div style="page-break-after: always"><span style="display: none"> </span></div>'
分页符自己设置 我用的是FCKEditor的默认分页符
static function ContentsPages($url, $contents, $ptext = '<div style="page-break-after: always"><span style="display: none"> </span></div>') {
$arr = explode($ptext, $contents); //数组长度&总页数
$total = count($arr); //当前页
$nowpage = $_GET['page'] ? $_GET['page'] : 1; //上页
$prepage = $nowpage == 1 ? 1 : $nowpage - 1; //下页
$nextpage = $nowpage > $total - 1 ? $total : $nowpage + 1; //最后一页
$lastpage = $total;
$pdiv = '<br /><div style=\"height:30px;width:500px;border:1px; blackground-color:#ff0000; \">';
//$pdiv .= "第{$nowpage}页 / 总{$total}页 ";
//首页链接
$pdiv .= "<li style=\"display:inline;\"><a href=\"$url/1.html\" style=\"text-decoration:none;\">首页</a></li>";
//上页链接
$pdiv .= "<li style=\"display:inline;\"><a href=\"$url/$prepage.html\" style=\"text-decoration:none;\"> 上一页 </a></li>";
//显示分页列表
$color = '';
for ($i = 1; $i <= $total; $i++) {
if ($i == $nowpage) {
$color = "color:#ff0000;";
} else {
$color = '';
}
$pdiv .= " <li style=\"display:inline;\"><a href=\"$url/$i.html\" style=\"text-decoration:none;\"><span style=\"{$color}\">{$i}</span></a></li>";
}
//下页链接
$pdiv .= " <li style=\"display:inline;\"><a href=\"$url/$nextpage.html\" style=\"text-decoration:none;\"> 下一页</a></li>";
//末页链接
$pdiv .= "<li style=\"display:inline;\"><a href=\"$url/$lastpage.html\" style=\"text-decoration:none;\"> 末页 </a></li>";
$pdiv .= '</div>'; //输出内容
//不分页则不显示分页列表
if ($total <= 1)
$pdiv = '';
//输出分页列表
$business_info = array(
'content' => $arr[$nowpage - 1],
'page' => $pdiv
);
return $business_info;
}
在controller里面我重写了loadModel
public function loadModel($id) {
//$c = new CDbCriteria();
//$c->condition = 'article_id=:id';
//$c->params = array(':id'=>(int)$id);
//$model = Article::model()->find($c);
$model = Article::model()->findByPk((int) $id);
$c = new CDbCriteria();
$c->condition = 'ainfo_id=:id';
$c->params = array(':id'=>(int)$model->ainfo_id);
$info = ArticleInfo::model()->find($c);
$url = new CUrlManager();
$model->Article_info->ainfo_content = ArticleInfo::ContentsPages(Article::formaturl($url->createUrl('article/view/', array('id' => $id))), $info->ainfo_content);
if ($model === null)
throw new CHttpException(404, '您请求的页面不存在……');
return $model;
}
view中:
<div id="newsn_left3con">
<?php echo $model->Article_info->ainfo_content['content']; ?>
</div>
<center>
<?php echo $model->Article_info->ainfo_content['page']; ?>
</center>
我的思路是在需要分页的地方插入分页符,在读出的时候用分页符将内容分割成数组,再读出。手动分页虽然说麻烦一些,但是不会出现将标签给分开的状况,我还是认为这样较好。当然,还可以用js做假分页,可惜我不会,求高手贴出来~~
申请加精~~
共 7 条回复
-
menghuangxiao 回复于 2012-09-05 20:49 举报
学习学习
-
fengzhishangsky 回复于 2012-09-26 16:20 举报
好的,正好需要
tz_com 山东
注册时间:2011-03-01
最后登录:2019-08-18
在线时长:1小时9分
最后登录:2019-08-18
在线时长:1小时9分
- 粉丝1
- 金钱440
- 威望0
- 积分450