doyocms自定义分页样式
2019-12-01 Umming doyocms 评论(0) 浏览(1761)
doyocms分页这个问题估计好多人都遇到过,系统的分页样式一般都不是我们自己想要的,但是要改的话,比较麻烦,不知从何下手。下面我就来教大家如何修改系统的分页,自制自己的分页样式。
涉及文件:Functions.php、article.php、product.php
Functions.php找到分页的几个方法:html_url pagetxt pagetxt_html
方法介绍:
html_url:生成url链接或分页列表
pagetxt:构成动态的分页
pagetxt_html:构成静态的分页
我们要自制分页,首先就要重写pagetxt和pagetxt_html这两个方法,但是不是直接改呢?我个人觉得不要直接改,因为后台分页也是使用的这个分页样式,如果你改了,后台分页也会被改变。
所以,我直接写个自己的样式出来。废话不多说,上代码:
//自定义分页样式
/*
$pagetxt=array(
'First'=>首页,
'Prev' =>上一页,
'hpage'=>当前页码,
'listpage'=>array(页码,链接url),页码链接
'Next'=>下一页,
'Last'=>最后一页
);
*/ function pagetype($pagearray,$pageno=3){ $pagetxt=array();$pageurl=$_SERVER["QUERY_STRING"]; if($pagearray['current_page']>1){ //$pagetxt.='<a href="'.url_set_value($pageurl,'page',1).'">首页</a><a class="currentpage" href="'.url_set_value($pageurl,'page',$pagearray['prev_page']).'">上一页</a>'; $pagetxt['First']=url_set_value($pageurl,'page',1); $pagetxt['Prev']=url_set_value($pageurl,'page',$pagearray['prev_page']); } $pageno1=$pagearray['current_page']-$pageno;if($pageno1<1)$pageno1=1; $pageno2=$pagearray['current_page']+$pageno;if($pageno2>$pagearray['total_page']){$pageno2=$pagearray['total_page'];} while($pageno1<=$pageno2){ if($pagearray['current_page']==$pageno1){$pagetxt['hpage']=$pageno1;}else{$pagetxt['listpage'][]=array($pageno1,url_set_value($pageurl,'page',$pageno1));} $pageno1++; } if($pagearray['current_page'] < $pagearray['last_page']){ $pagetxt['Next']=url_set_value($pageurl,'page',$pagearray['next_page']); $pagetxt['Last']=url_set_value($pageurl,'page',$pagearray['last_page']); } return $pagetxt; } function pagetype_html($url,$total_page,$current_page,$pageno=3){ if($GLOBALS['G_DY']['rewrite']["rewrite_open"]==1){$is_p=1;}else{$is_p='';} $pagetxt=array();$n=$current_page+1;$p=$current_page-1; if($current_page>1){ $pagetxt['First']=str_replace('[p]',$is_p,$url); if($current_page==2){$pagetxt['Prev']=str_replace('[p]',$is_p,$url); }else{$pagetxt['Prev']=str_replace('[p]',$p,$url);} } $pageno1=$current_page-$pageno;if($pageno1<1)$pageno1=1; $pageno2=$current_page+$pageno;if($pageno2>$total_page)$pageno2=$total_page; while($pageno1<=$pageno2){ if($current_page==$pageno1){$pagetxt['hpage']=$pageno1;}else{ if($pageno1==1){$pagetxt['listpage'][]=array($pageno1,str_replace('[p]',$is_p,$url)); }else{$pagetxt['listpage'][]=array($pageno1,str_replace('[p]',$pageno1,$url));} } $pageno1++; } if($current_page < $total_page){ $pagetxt['Next']=str_replace('[p]',$n,$url);$pagetxt['Last']=str_replace('[p]',$total_page,$url); } return $pagetxt; }
返回的是一个数组,里面包含了:首页,上一页,下一页,当前页的页码,页码列表
可以直接输出对应的数据,大家看方法如何自定义输出吧,输出的分页列表已经拆开来了,这样就方便我们套样式了。
另外,我再写了一个计算总分页的代码:
//统计总页数 function count_page($sql,$molds,$limit=1){ $a=syDB($molds)->findSql($sql); $a=count($a); $page=ceil($a/$limit); if($page<1){ return 1; }else{ return $page; } }
使用的时候是在article.php或者product.php里面的type方法里:
$this->allpage=count_page($sql,'product',$this->type['listnum']);//总分页
注:$sql一定要是最后的sql才有用,也就是拼接完整的sql才能执行。
上面这些准备工作弄好了,准备接入到html_url里面去。
html_url($type,$c,$pages=0,$ispage,$ptype=1)
加多个参数,默认为1.
在对应的pagetxt、pagetxt_html的地方做判断,我举个例子:
//$go_url=pagetxt_html($go_url,$pages['total_page'],$ispage); if($ptype==1){ $go_url=pagetxt_html($go_url,$pages['total_page'],$ispage); }else{ $go_url=pagetype_html($go_url,$pages['total_page'],$ispage); } //if($pages!==0)$go_url=pagetxt($pages); if($pages!==0){ if($ptype==1){ $go_url=pagetxt($pages); }else{ $go_url=pagetype($pages); } }
以上。大家应该能看明白吧?有好多个位置需要修改的,我就不一一写出来了。
在article.php和product.php里使用的时候只要添加个参数就OK了:
$this->pages=html_url('classtype',$this->type,$pages,$this->syArgs('page',0,1),2);
如果你加了这个参数,那么这时候的$pages是一个数组,你在页面需要自己制定样式.
输出:
首页:{$pages['First']}
下一页:{$pages['Next']}
上一页:{$pages['Prev']}
当前页页码:{$pages['hpage']}
总页数:{$allpage} 这个是我另外一个方法写的
页码列表:{foreach $pages['listpage'] as $v}
页码:{$v[0]}
页面url:{$v[1]}
{/foreach}
就这样,不知道大家有没有学会?
标签: doyocms
下一篇: doyo系统自动根据设置关键字添加链接
本文链接:https://www.umming.com/doyocms/178.html
声明:本站信息由网友自行发布或来源于网络,真实性、合法性由发布人负责,请仔细甄别!本站只为传递信息,我们不做任何双方证明,也不承担任何法律责任。文章内容若侵犯你的权益,请联系本站删除!
发表评论: