尤明明Blog

网站建设 | 前端切图,技术不仅是一种专业,更是一种责任!

您的当前位置: 首页 » CMS学习 » doyocms »

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

本文链接:https://www.umming.com/doyocms/178.html

声明:本站信息由网友自行发布或来源于网络,真实性、合法性由发布人负责,请仔细甄别!本站只为传递信息,我们不做任何双方证明,也不承担任何法律责任。文章内容若侵犯你的权益,请联系本站删除!


发表评论:

//