修改PHPCMS默认的分页样式
2017-09-28 00:00
351 查看
这里将phpcms默认的分页样式修改为只有“上一页”、“下一页”,有分页时第一页只显示“下一页”、最后一页只显示“上一页”。步骤如下:
1、修改分页路径函数pageurl(),重新命名为en_pageurl()。在公共函数库文件phpcms/libs/functions/global.func.php中,新建分页路径函数en_pageurl(),不破坏原函数:
这里的修改,主要是将 if(strpos($urlrule, '~')){……}中的 $urlrule = $page < 2 ? $urlrules[0] : $urlrules[1]; 替换为 $urlrule = $page < 2 ? '1.html' : $urlrules[1]。即在当前页码小于2时,返回的是第一页 1.html。
2、修改分页函数pages():在公共函数库文件phpcms/libs/functions/global.func.php 中新建分页函数,命名为 en_pages(),不破坏原分页函数。引用的分页路径是修改过的函数en_pageurl()。改写成内容为:
这里增加了分页样式,引用的是bootstrap和fontawesome字体;并且引用修改过的分页路径函数en_pageurl()。
3、修改解析pc标签的模板函数:phpcms/libs/classes/template_cache.class.php中,定位到函数pc_tag()中,新增两条语句。
将case 'get' 中的 if(isset($page)){……} 中$str .= '$r = $get_db->sql_query……后新增一条语句,改为(大约第181行后):
将 else {……} 中的 if(isset($page)){……}中$str .= '$pages = pages(……);后新增一条语句,改为(大约第210行后):
4、修改公共语言库:在phpcms/languages/zh-cn/system.lang.php中,新增自定义的公共语言:
5、模板中引用:在要分页的地方直接引用新分页函数{$en_pages}:
这里引用的是bootstrap样式。
1、修改分页路径函数pageurl(),重新命名为en_pageurl()。在公共函数库文件phpcms/libs/functions/global.func.php中,新建分页路径函数en_pageurl(),不破坏原函数:
/** * 返回分页路径———修改过 * * @param $urlrule 分页规则 * @param $page 当前页 * @param $array 需要传递的数组,用于增加额外的方法 * @return 完整的URL路径 */ function en_pageurl($urlrule, $page, $array = array()) { if(strpos($urlrule, '~')) { $urlrules = explode('~', $urlrule); $urlrule = $page < 2 ? '1.html' : $urlrules[1]; } $findme = array('{$page}'); $replaceme = array($page); if (is_array($array)) foreach ($array as $k=>$v) { $findme[] = '{$'.$k.'}'; $replaceme[] = $v; } $url = str_replace($findme, $replaceme, $urlrule); $url = str_replace(array('http://','//','~'), array('~','/','http://'), $url); return $url; }
这里的修改,主要是将 if(strpos($urlrule, '~')){……}中的 $urlrule = $page < 2 ? $urlrules[0] : $urlrules[1]; 替换为 $urlrule = $page < 2 ? '1.html' : $urlrules[1]。即在当前页码小于2时,返回的是第一页 1.html。
2、修改分页函数pages():在公共函数库文件phpcms/libs/functions/global.func.php 中新建分页函数,命名为 en_pages(),不破坏原分页函数。引用的分页路径是修改过的函数en_pageurl()。改写成内容为:
/** * 自定义分页函数,只显示上一页、下一页 * * @param $num 信息总数 * @param $curr_page 当前分页 * @param $perpage 每页显示数 * @param $urlrule URL规则 * @param $array 需要传递的数组,用于增加额外的方法 * @return 分页 */ function en_pages($num, $curr_page, $perpage = 20, $urlrule = '', $array = array(),$setpages = 10) { if(defined('URLRULE') && $urlrule == '') { $urlrule = URLRULE; $array = $GLOBALS['URL_ARRAY']; } elseif($urlrule == '') { $urlrule = url_par('page={$page}'); } $multipage = ''; if($num > $perpage) { $page = $setpages+1; $offset = ceil($setpages/2-1); $pages = ceil($num / $perpage); if (defined('IN_ADMIN') && !defined('PAGES')) define('PAGES', $pages); $from = $curr_page - $offset; $to = $curr_page + $offset; $more = 0; if($page >= $pages) { $from = 2; $to = $pages-1; } else { if($from <= 1) { $to = $page-1; $from = 2; } elseif($to >= $pages) { $from = $pages-($page-2); $to = $pages-1; } $more = 1; } // 修改过的分页类 // $multipage .= '<a class="a1">'.$num.L('en_page_item').'</a>'; if($curr_page>0) { $multipage .= ' <li style="float: left"><a href="' .en_pageurl($urlrule, $curr_page-1, $array) .'" class="btn btn-pager btn-prev"><i class="fa fa-arrow-left"></i> ' .L('en_previous') .'</a></li>'; if($curr_page==1) { //当前页是第一页时,只显示 "next" $multipage = ''; } } if($curr_page<$pages) { $multipage .= ' <li style="float: right"><a href="' .en_pageurl($urlrule, $curr_page+1, $array) .'" class="btn btn-pager btn-next">' .L('en_next') .' <i class="fa fa-arrow-right"></i></a></li>'; } elseif($curr_page==$pages) { // 当前页是最后一页时,只显示 "previous" $multipage .= ''; } else { // 下面一行无用,可删除 $multipage .= ' <a href="'.en_pageurl($urlrule, $pages, $array).'">'.$pages.'</a> <a href="'.en_pageurl($urlrule, $curr_page+1, $array).'" class="a1 older_posts">'.L('en_next').'</a>'; } } return $multipage; }
这里增加了分页样式,引用的是bootstrap和fontawesome字体;并且引用修改过的分页路径函数en_pageurl()。
3、修改解析pc标签的模板函数:phpcms/libs/classes/template_cache.class.php中,定位到函数pc_tag()中,新增两条语句。
将case 'get' 中的 if(isset($page)){……} 中$str .= '$r = $get_db->sql_query……后新增一条语句,改为(大约第181行后):
if (isset($page)) { $str .= '$pagesize = '.$num.';'; $str .= '$page = intval('.$page.') ? intval('.$page.') : 1;if($page<=0){$page=1;}'; $str .= '$offset = ($page - 1) * $pagesize;'; $limit = '$offset,$pagesize'; $sql = 'SELECT COUNT(*) as count FROM ('.$datas['sql'].') T'; $str .= '$r = $get_db->sql_query("'.$sql.'");$s = $get_db->fetch_next();$pages=pages($s[\'count\'], $page, $pagesize, $urlrule);'; /*新增语句*/ $str .= '$r = $get_db->sql_query("'.$sql.'");$s = $get_db->fetch_next();$en_pages=en_pages($s[\'count\'], $page, $pagesize, $urlrule);'; }
将 else {……} 中的 if(isset($page)){……}中$str .= '$pages = pages(……);后新增一条语句,改为(大约第210行后):
if (isset($page)) { $str .= '$pagesize = '.$num.';'; $str .= '$page = intval('.$page.') ? intval('.$page.') : 1;if($page<=0){$page=1;}'; $str .= '$offset = ($page - 1) * $pagesize;'; $datas['limit'] = '$offset.",".$pagesize'; $datas['action'] = $action; $str .= '$'.$op.'_total = $'.$op.'_tag->count('.self::arr_to_html($datas).');'; $str .= '$pages = pages($'.$op.'_total, $page, $pagesize, $urlrule);'; /*新增自定义*/ $str .= '$en_pages = en_pages($'.$op.'_total, $page, $pagesize, $urlrule);'; }
4、修改公共语言库:在phpcms/languages/zh-cn/system.lang.php中,新增自定义的公共语言:
/*----------新增自定义-------*/ $LANG['en_page_item'] = '总共'; $LANG['en_previous'] = '上一页'; $LANG['en_next'] = '下一页'; /*----------新增自定义-------*/
5、模板中引用:在要分页的地方直接引用新分页函数{$en_pages}:
<nav> <ul class="pager"> {$en_pages} </ul> </nav>
这里引用的是bootstrap样式。
相关文章推荐
- 修改PHPCMS默认的分页样式
- 织梦默认分页样式修改 解决分页列表显示,去掉li
- 修改DataGrid控件的默认的分页样式
- phpcms中如何修改分页样式?
- 织梦默认分页样式修改 解决分页列表显示,去掉li
- QT修改默认的滚动条样式
- ubuntu14.04下直接修改apache2默认目录导致wordpress样式改变的解决办法
- 关于struts2 select标签默认样式的修改
- antd修改默认样式
- firefox + pentadactyl 实现纯绿色高效易扩展浏览器(同时实现修改默认状态栏样式)
- css修改浏览器默认的滚动条样式
- 修改easyui panel 默认样式
- 修改默认的excel单元格样式
- 帝国cms 列表页分页样式修改美化【1】
- 修改dedecms文章默认链接样式,利于SEO优化
- 修改 input[type=checkbox] 默认样式
- 修改 文件上传 默认样式
- 怎么修改单选框radio默认样式