下载鸥 > 网站下载 > 开发教程 > 帝国CMS

帝国cms某个栏目使用完全自定义的分页功能

767 2021-04-27 12:47:03

收藏
帝国CMS列表页的分页函数是用系统设置中的分页函数,修改都是在系统设置里进行修改,而数据存储在$public_r数组中,但如果,我们想在某个列表页使用完全不同的分页函数,或是完全自定义,这是否可行呢?

帝国cms某个栏目使用完全自定义的分页功能
答案是可以的。
 

操作步骤

1、这个列表页用的分页标签是[!–show.listpage–],为帝国cms的默认分页变量

2、对应的这个分页变量在$public_r数组中键名为listpagelistfun

3、进入如下目录
/e/class/userfun.php

写入一个新的分页函数,xzo_listpage(),代码如下
<?php
function xzo_listpage($num,$page,$dolink,$type,$totalpage,$line,$ok,$search=""){
    global $fun_r,$public_r;
    if($num<=$line)
    {
        $pager['showpage']='';
        return $pager;
    }
    $page_line=$public_r['listpagelistnum'];
    $snum=2;
    //$totalpage=ceil($num/$line);//取得总页数
    $firststr='<a title="Total record"> <b>'.num2str($num).'</b> </a>  ';
    //上一页
    if($page<>1)
    {
        $toppage='<a href="'.$dolink.'index'.$type.'">'.$fun_r['startpage'].'</a> ';
        $pagepr=$page-1;
        if($pagepr==1)
        {
            $prido="index".$type;
        }
        else
        {
            $prido="index_".$pagepr.$type;
        }
        $prepage='<a href="'.$dolink.$prido.'">'.$fun_r['pripage'].'</a>';
    }
    //下一页
    if($page!=$totalpage)
    {
        $pagenex=$page+1;
        $nextpage=' <a href="'.$dolink.'index_'.$pagenex.$type.'">'.$fun_r['nextpage'].'</a>';
        $lastpage=' <a href="'.$dolink.'index_'.$totalpage.$type.'">'.$fun_r['lastpage'].'</a>';
    }
    $starti=$page-$snum<1?1:$page-$snum;
    $no=0;
    for($i=$starti;$i<=$totalpage&&$no<$page_line;$i++)
    {
        $no++;
        if($page==$i)
        {
            $is_1="<b>";
            $is_2="</b>";
        }
        elseif($i==1)
        {
            $is_1='<a href="'.$dolink.'index'.$type.'">';
            $is_2="</a>";
        }
        else
        {
            $is_1='<a href="'.$dolink.'index_'.$i.$type.'">';
            $is_2="</a>";
        }
        $returnstr.=' '.$is_1.num2str($i).$is_2;
    }
    $returnstr=$firststr.$toppage.$prepage.$returnstr.$nextpage.$lastpage;
    $pager['showpage']=$returnstr;
    return $pager;
}
function num2str($num) {
    if(!is_numeric($num)) return false;
    $ret = '';
    if($num < 0) {
        $ret = '负';
        $num = -$num;
    }
    $zhNumArray = array(
        "1" => "一",
        "2" => "二",
        "3" => "三",
        "4" => "四",
        "5" => "五",
        "6" => "六",
        "7" => "七",
        "8" => "八",
        "9" => "九",
        "0" => "零",
    );
    $bitStrArray = array(
        "1" => "",
        "10" => "十",
        "100" => "百",
        "1000" => "千",
        "10000" => "万",
        "100000000" => "亿",
    );
    $prebit = 0;//上次记录的位数
    krsort($bitStrArray);
    foreach($bitStrArray as $bit => $name) {
        $bit = floatval($bit);
        if($num >= $bit) {
            $tmpNum = floor($num / $bit);
            if($tmpNum >= 10) {
                $tmpRet = num2str($tmpNum);
                $ret .= $tmpRet . $name;
            } else {
                if($prebit/$bit > 10) {//按照中文习惯补零
                    $ret .= '0';
                }
                $ret .= $tmpNum . $name;
            }
            $prebit = $bit;
            $num = fmod($num, $bit);//取模
        }
    }
    $ret = str_replace(array_keys($zhNumArray), array_values($zhNumArray), $ret);
    return $ret;
}
?>

4、接下来我们要在相应的列表页模板最顶部加入赋值代码
<?php $public_r[listpagelistfun]="xzo_listpage";?>

注意:此处一定要使用双引号,否则会提示函数未定义
 

说明

由于只在userfun.php文件中封装了一个新的函数,并且将函数名赋值给了$public_r[listpagelistfun],这样只有使用使用这个列表页模板的栏目会使用这个新的分页函数,而其他未配置的栏目页则仍然采用默认的分页函数,
 

附注

这里只是写了对分页函数重新赋值的用法,对于其他数组内的设置也可通过此方法进行赋值,大家可以根据这个思路,开发更多好用实用的功能。

本文地址:https://xzo.com.cn/develop/empire/861.html

有帮助,很赞!

信息来源:下载鸥
导出教程 下载word版教程
发表评论 共有条评论
关于帝国CMS


帝国cms是一款功能极为强大的cms程序,性能强悍、安全性高,可轻松支持10万数据,高级开发人员可制作出能容纳千万数据量的网站,是国内最出色的开源cms程序之一,推荐企业用户使用

当前最新版本为7.5,8.0版本即将上线,新版本的核心优化点在于多终端的适配。

推荐帝国CMS开发教程
帝国CMS的下载地址怎样设置点击进入下载页而不弹小窗口
帝国CMS的下载地址怎样设置点击进入下载页而不弹小窗口

帝国cms默认的下载地址是点击后弹窗一个小窗口,用户体验度并不好,但我们可以...

13 789
帝国cms安装报错fatal error:require():Failed opening required ../class/EmpireCMS_version.php(include_path=.
帝国cms安装报错fatal error:require():Failed opening required ../class/EmpireCMS_version.php(include_path=.

帝国CMS安装报错 fatal error:require():Failed opening required ../clas...

1 724
帝国CMS文章配图怎样设置自动添加水印?
帝国CMS文章配图怎样设置自动添加水印?

现在采集网站非常多,不止采集内容,还采集图片,还不标注出处,非常可恶。那么,帝国...

1 595
帝国cms怎样批量删除上万篇文章/指定会员/时间段发布的信息?
帝国cms怎样批量删除上万篇文章/指定会员/时间段发布的信息?

在网站运营过程中,我们可能因为这样那样的原因需要批量删除大批文章信息,几十...

1 1239
帝国cms灵动标签开发那年今日发布的文章
帝国cms灵动标签开发那年今日发布的文章

很多国民app有去年今日的功能,就如QQ空间的那年今日。而网站如果调用那年今...

0 504
帝国cms怎样让不同的会员组浏览不同的内容?
帝国cms怎样让不同的会员组浏览不同的内容?

很多帝国cms站点设置了多级会员,不同的会员具备不同的浏览下载权限。在这个...

0 451
帝国cms网站怎样判断是动态、静态还是伪静态?
帝国cms网站怎样判断是动态、静态还是伪静态?

对于资深一点的站长或者SEO来说,一定会经常听到动态、静态、伪静态这类的词...

0 642
帝国cms怎样给广告增加排序?
帝国cms怎样给广告增加排序?

帝国cms广告系统功能比较强大,但本身并没有排序的功能。如果想要替换广告的...

3 516
推荐插件
帝国cms自动生成文章新闻目录插件下载
帝国cms自动生成文章新闻目录插件下载

用户体验是我们的需求,百度蜘蛛的认可更是我们的需求。毕竟,没有收录排名,何来...

0 1148
帝国cms智能自动审核按星期几审核指定栏目带推送插件
帝国cms智能自动审核按星期几审核指定栏目带推送插件

采集站的必备资源是自动审核,要做到日收录也离不开定时发布。而本插件的自动...

0 1310
帝国cms访问统计ip地址链接与封禁插件下载
帝国cms访问统计ip地址链接与封禁插件下载

下载鸥开发了这款帝国cms封禁ip插件,自动记录访问情况,让我们可以更快的识别...

0 1059
帝国cms百度文字识别ocr接口对接插件
帝国cms百度文字识别ocr接口对接插件

许多网站会做一些小功能小插件给客户使用以增强用户黏性,比如图片转文字,这种...

0 487
帝国cms百度AI图像去雾api接口对接插件
帝国cms百度AI图像去雾api接口对接插件

通过本插件,可以实现帝国cms网站对接百度云api实现图像去雾的功能。经过实际...

0 474
帝国CMS内网用户静态站点文章访客统计插件
帝国CMS内网用户静态站点文章访客统计插件

本插件适用于内网用户,可查看单篇文章访问者ip地址。如果添加访问者ip组,可查...

0 579
帝国cms百度AI图像无损放大api接口对接插件
帝国cms百度AI图像无损放大api接口对接插件

通过本插件,可以实现帝国cms网站对接百度云api实现图像无损放大的功能。经过...

0 467
帝国cms自动给正文关键词添加tag内链
帝国cms自动给正文关键词添加tag内链

帝国cms有自带的给关键词添加内链功能,但需要手动添加关键词,容易出现疏漏和...

0 858
客服QQ:341553759
扫码咨询 常见问题 >
官方交流群:90432500
点击加入