PHPCMS V9 分页函数解析

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 用phpcms做网站有些客户很是挑剔(此处省略几千万字问候他全家的话语)。非要自定义的分页,比如:分页.jpg如果你会用{$pages}进行分页的话,那接下来就很容易了。

用phpcms做网站有些客户很是挑剔(此处省略几千万字问候他全家的话语)。非要自定义的分页,比如:

img_360bb0aa010a2983f208804be662a239.jpe
分页.jpg

如果你会用 {$pages}进行分页的话,那接下来就很容易了。下面引用一下官方论坛给出的答复,然后我在后面完善一下(主要函数里面具体什么意思):

大家做网站的时候,可能很多时候分页样式都得根据模板的要求来控制的,这时很多人都会去修改全局文件phpcms\libs\functions\global.func.php里的pages()函数,这样问题就来了:这个分页函数连后台也会影响到的,就是说,这个分页函数是全站共用的。
下面提供解决方法:(这个得修改文件,修改前记得备份)
打开
phpcms\libs\functions\global.func.php这个文件,找到分页函数,复制一下,粘贴到默认分页函数的下面,重新命名,比如我的就命名为wz_pages,保存。
打开phpcms/libs/classes/template_cache.class.php,找到207行的
str.=pages = pages(.op.'_total, page,pagesize, urlrule);;str .= 'wzpages=wzpages('.op.total,page, pagesize,urlrule);';
保存。
最后,如果你要使用你自定义的分页函数,那么在模板中直接用{wz_pages}就可以了、、  以后要修改样式,直接修改  phpcms\libs\functions\global.func.php这个文件中的wz_pages函数就可以了,不会影响到后台  我的表达能力就只有这些了,看不懂的,回贴吧、、  后续优化:  使用过程中,发现使用SQL分页的不能正常使用,得再添加如下代码  打开  phpcms/libs/classes/template_cache.class.php,找到178行的str .= 'r=get_db->sql_query("'.sql.");s = getdb>fetchnext();pages=pages(s[count],page, pagesize,urlrule);';
在他下面增加:
str.=r = getdb>sqlquery(".sql.'");s=get_db->fetch_next();wzpages=wzpages(s['count'], page,pagesize, urlrule);;SQL  使phpcms\libs\classes\model.class.php61this->pages = pages(this>number,page, pagesize,urlrule, array,setpages);
把上面这行修改成:
this>pages=wzpages(this->number, page,pagesize, urlrule,array, setpages);($pages$wzpages)6161this->wz_pages= wz_pages(this>number,page, pagesize,urlrule, array,setpages);
再去到:phpcms\modules\member\index.php 718行
pages=this->favorite_db->pages;
修改为:
wzpages=this->favorite_db->wz_pages;
模板中的{pages}要修改为{wz_pages}
这是以收藏列表为例子,其他的也大同小异了、、

page函数:

function my_pages($num, $curr_page, $perpage = 20, $urlrule = '', $array = array(),$setpages = 10) {
//if条件里面基本上不用管,跟样式没有关系,无非就是计算多少页
    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('page_item').'</a>';
        if($curr_page>0) {
            //这个是上一页(a标签里面带有L函数的就是上一页下一页)我已经把上一页下一页这两个去掉了,可以和自带的pages函数对比一下
            //$multipage .= ' <a href="'.pageurl($urlrule, $curr_page-1, $array).'" class="a1">'.L('previous').'</a>';
            if($curr_page==1) {
                //span里面加class是根据JS样式,选中是什么效果写的。如果想要选中是自定义效果就可以仿照这样写。我这个是选中的时候是红色的效果。
                $multipage .= ' <span class="curr">1</span>';
            } elseif($curr_page>6 && $more) {
                $multipage .= ' <a href="'.pageurl($urlrule, 1, $array).'">1</a>..';
            } else {
                $multipage .= ' <a href="'.pageurl($urlrule, 1, $array).'">1</a>';
            }
        }
        for($i = $from; $i <= $to; $i++) {
            if($i != $curr_page) {
                $multipage .= ' <a href="'.pageurl($urlrule, $i, $array).'">'.$i.'</a>';
            } else {
                $multipage .= ' <span class="curr">'.$i.'</span>';
            }
        }
        if($curr_page<$pages) {
            if($curr_page<$pages-5 && $more) {
                $multipage .= ' ..<a href="'.pageurl($urlrule, $pages, $array).'">'.$pages.'</a>';
            } else {
                $multipage .= ' <a href="'.pageurl($urlrule, $pages, $array).'">'.$pages.'</a> ';
            }
        } elseif($curr_page==$pages) {
            $multipage .= ' <span class="curr">'.$pages.'</span>';
            //$multipage .= ' <span>'.$pages.'</span> <a href="'.pageurl($urlrule, $curr_page, $array).'" class="a1">'.L('next').'</a>';//后面的a里面是下一页
        } else {
            $multipage .= ' <a href="'.pageurl($urlrule, $pages, $array).'">'.$pages.'</a>';
        }
    }
    return $multipage;
}
AI 代码解读

自定义分页样式其实只要把这个方法看明白了也就感觉很容易了。

目录
打赏
0
0
0
0
207
分享
相关文章
LLM高效推理:KV缓存与分页注意力机制深度解析
随着大型语言模型(LLM)规模和复杂性的增长,高效推理变得至关重要。KV缓存和分页注意力是优化LLM推理的两项关键技术。KV缓存通过存储键值对减少重复计算,而分页注意力则通过将序列分割成小块来降低内存消耗,从而有效处理长序列。本文深入剖析这些技术的工作原理及其在仅解码器模型中的应用,探讨其优势与挑战,并展示其实现示例。
54 16
LLM高效推理:KV缓存与分页注意力机制深度解析
|
3月前
|
【C语言】断言函数 -《深入解析C语言调试利器 !》
断言(assert)是一种调试工具,用于在程序运行时检查某些条件是否成立。如果条件不成立,断言会触发错误,并通常会终止程序的执行。断言有助于在开发和测试阶段捕捉逻辑错误。
71 5
前端基础(十二)_函数高级、全局变量和局部变量、 预解析(变量提升)、函数返回值
本文介绍了JavaScript中作用域的概念,包括全局变量和局部变量的区别,预解析机制(变量提升),以及函数返回值的使用和类型。通过具体示例讲解了变量的作用域、函数的返回值、以及如何通过return关键字从函数中返回数据。
42 1
前端基础(十二)_函数高级、全局变量和局部变量、 预解析(变量提升)、函数返回值
|
5月前
|
atoi函数解析以及自定义类型经典练习题
atoi函数解析以及自定义类型经典练习题
80 0
深入探索:Python中的并发编程新纪元——协程与异步函数解析
深入探索:Python中的并发编程新纪元——协程与异步函数解析
50 3
【C++篇】C++类与对象深度解析(三):类的默认成员函数详解
【C++篇】C++类与对象深度解析(三):类的默认成员函数详解
48 3

热门文章

最新文章

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等