「特科网」12年专注网站建设,小程序开发,SEO优化服务!

特科自用

帝国CMS

帝国 CMS 自定义列表分页样式sys_ShowListMorePage完整操作

帝国 CMS 自定义列表分页样式sys_ShowListMorePage完整操作

一、核心原则:不要直接修改系统文件

系统原生分页函数存放在 /e/class/t_functions.php,直接修改会在程序升级时被覆盖。官方推荐方案:把原生函数复制到 /e/class/userfun.php(用户自定义函数文件,升级不覆盖),重命名后修改 HTML 结构,再在后台绑定新函数名。


二、分步操作教程

步骤 1:复制原生函数到自定义文件

  1. 打开系统函数文件:/e/class/t_functions.php

  2. 找到 sys_ShowListMorePage 完整函数(从 function 开头到结尾大括号),全选复制。

  3. 打开用户自定义函数文件:/e/class/userfun.php

  4. 在文件的 <?php 标签内粘贴代码,将函数名改为自定义名称,例如 user_ShowListMorePage。

步骤 2:自定义 HTML 结构与样式类名

在复制的函数中,你可以自由修改:分页容器标签、CSS 类名、上一页 / 下一页文字、是否显示首页 / 尾页、当前页高亮、总页数统计等。下面给出一个保留原生分页逻辑(页码省略、兼容动态 / 静态)、仅优化 HTML 结构的示例,方便你写 CSS 美化:

//列表模板之列表式分页
function user_ShowListMorePage($num,$page,$dolink,$type,$totalpage,$line,$ok,$search="",$add=null){
    global $fun_r,$public_r;
    if($num<=$line)
    {
        $pager['showpage']='';
        return $pager;
    }
    //文件名
    if(empty($add['dofile']))
    {
        $add['dofile']='index';
    }
    //静态页数
    $repagenum=$add['repagenum'];
    $page_line=$public_r['listpagelistnum'];
    $snum=2;
    //$totalpage=ceil($num/$line);//取得总页数
    $firststr='<a title="Total record">&nbsp;<b>'.$num.'</b> </a>&nbsp;&nbsp;';
    //上一页
    if($page<>1)
    {
        $toppage='<a href="'.$dolink.$add['dofile'].$type.'">'.$fun_r['startpage'].'</a>&nbsp;';
        $pagepr=$page-1;
        if($pagepr==1)
        {
            $prido=$add['dofile'].$type;
        }
        else
        {
            $prido=$add['dofile'].'_'.$pagepr.$type;
        }
        $prepage='<a href="'.$dolink.$prido.'">'.$fun_r['pripage'].'</a>';
    }
    //下一页
    if($page!=$totalpage)
    {
        $pagenex=$page+1;
        $nextpagelink=$repagenum&&$repagenum<$pagenex?eReturnRewritePageLink2($add,$pagenex):$dolink.$add['dofile'].'_'.$pagenex.$type;
        $lastpagelink=$repagenum&&$repagenum<$totalpage?eReturnRewritePageLink2($add,$totalpage):$dolink.$add['dofile'].'_'.$totalpage.$type;
        $nextpage='&nbsp;<a href="'.$nextpagelink.'">'.$fun_r['nextpage'].'</a>';
        $lastpage='&nbsp;<a href="'.$lastpagelink.'">'.$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.$add['dofile'].$type.'">';
            $is_2="</a>";
        }
        else
        {
            $thispagelink=$repagenum&&$repagenum<$i?eReturnRewritePageLink2($add,$i):$dolink.$add['dofile'].'_'.$i.$type;
            $is_1='<a href="'.$thispagelink.'">';
            $is_2="</a>";
        }
        $returnstr.='&nbsp;'.$is_1.$i.$is_2;
    }
    $returnstr=$toppage.$prepage.$returnstr.$nextpage.$lastpage;
    $pager['showpage']=$returnstr;
    return $pager;
}

步骤 3:后台绑定自定义分页函数

  1. 进入后台 → 系统 → 系统设置 → 系统参数设置 → 信息设置

    帝国 CMS 自定义列表分页样式sys_ShowListMorePage完整操作 第1张

  2. 找到「列表分页函数 (列表)」,把默认的 sys_ShowListMorePage 替换为你的自定义函数名 user_ShowListMorePage

  3. 保存设置后,进入 系统 → 数据更新 → 清除全站缓存 生效。

步骤 4:模板中调用分页

在列表模板里,直接输出分页变量即可:

[!--show.listpage--]

你截图里「模板支持程序代码」已经是开启状态,无需额外设置。

步骤 5:写 CSS 美化样式

给上面的自定义类名添加样式,示例:

.page-box {
    display: flex;
    gap: 8px;
    align-items: center;
    justify-content: center;
    margin: 30px 0;
    flex-wrap: wrap;
}
.page-btn, .page-num {
    padding: 6px 12px;
    border: 1px solid #e5e7eb;
    border-radius: 4px;
    color: #333;
    text-decoration: none;
    font-size: 14px;
    transition: all 0.2s;
}
.page-num.active {
    background: #165DFF;
    color: #fff;
    border-color: #165DFF;
}
.page-btn:hover, .page-num:hover {
    border-color: #165DFF;
    color: #165DFF;
}
.page-info {
    color: #999;
    font-size: 13px;
    margin-left: 10px;
}