帝国CMS列表分页标签定制样式修改HTML方法

帝国CMS教程 2026-07-04 11:21:08 16

帝国CMS 实际有三套分页逻辑,分别用在不同的场景。搞清楚它们的区别,才知道改哪里。

下拉式分页

[!--show.page--]

这种方式的分页可以在后台“模板”-> 公共模板管理 -> 列表分页模板 做一些简单的html定制化


列表式分页

[!--show.listpage--]

这种方式的html完全写死在php代码中,后台管理页面没有地方可以修改
这两种模板的分页标签默认都在这个函数中处理的 e\class\t_functions.php

sys_ShowListPage

//列表模板分页函数
function sys_ShowListPage($num,$pagenum,$dolink,$dotype,$page,$lencord,$ok,$search="",$add=null){
	global $fun_r;
	//文件名
	if(empty($add['dofile']))
	{
		$add['dofile']='index';
	}
	//静态页数
	$repagenum=$add['repagenum'];
	//首页
	if($pagenum<>1)
	{
		$pagetop="<a href='".$dolink.$add['dofile'].$dotype."'>".$fun_r['startpage']."</a>&nbsp;&nbsp;";
	}
	else
	{
		$pagetop=$fun_r['startpage']."&nbsp;&nbsp;";
	}
	//上一页
	if($pagenum<>1)
	{
		$pagepr=$pagenum-1;
		if($pagepr==1)
		{
			$prido=$add['dofile'].$dotype;
		}
		else
		{
			$prido=$add['dofile'].'_'.$pagepr.$dotype;
		}
		$pagepri="<a href='".$dolink.$prido."'>".$fun_r['pripage']."</a>&nbsp;&nbsp;";
	}
	else
	{
		$pagepri=$fun_r['pripage']."&nbsp;&nbsp;";
	}
	//下一页
	if($pagenum<>$page)
	{
		$pagenex=$pagenum+1;
		$nextpagelink=$repagenum&&$repagenum<$pagenex?eReturnRewritePageLink2($add,$pagenex):$dolink.$add['dofile'].'_'.$pagenex.$dotype;
		$pagenext="<a href='".$nextpagelink."'>".$fun_r['nextpage']."</a>&nbsp;&nbsp;";
	}
	else
	{
		$pagenext=$fun_r['nextpage']."&nbsp;&nbsp;";
	}
	//尾页
	if($pagenum==$page)
	{
		$pageeof=$fun_r['lastpage'];
	}
	else
	{
		$lastpagelink=$repagenum&&$repagenum<$page?eReturnRewritePageLink2($add,$page):$dolink.$add['dofile'].'_'.$page.$dotype;
		$pageeof="<a href='".$lastpagelink."'>".$fun_r['lastpage']."</a>";
	}
	$options="";
	//取得下拉页码
	if(empty($search))
	{
		for($go=1;$go<=$page;$go++)
		{
			if($go==1)
			{$file=$add['dofile'].$dotype;}
			else
			{$file=$add['dofile'].'_'.$go.$dotype;}
			$thispagelink=$repagenum&&$repagenum<$go?eReturnRewritePageLink2($add,$go):$dolink.$file;
			if($ok==$go)
			{$select=" selected";}
			else
			{$select="";}
			$myoptions.="<option value='".$thispagelink."'>".$fun_r['gotos'].$go.$fun_r['gotol']."</option>";
			$options.="<option value='".$thispagelink."'".$select.">".$fun_r['gotos'].$go.$fun_r['gotol']."</option>";
		}
	}
	else
	{
		$myoptions=$search;
		$options=str_replace("value='".$dolink.$add['dofile'].'_'.$ok.$dotype."'>","value='".$dolink.$add['dofile']."_".$ok.$dotype."' selected>",$search);
	}
	$options="<select name=select onchange=\"self.location.href=this.options[this.selectedIndex].value\">".$options."</select>";
	//分页
	$pagelink=$pagetop.$pagepri.$pagenext.$pageeof;
	//替换模板变量
	$pager['showpage']=ReturnListpageStr($pagenum,$page,$lencord,$num,$pagelink,$options);
	$pager['option']=$myoptions;
	return $pager;
}

以上两种方式定制性都不高,如果要求更加灵活可以到 后台->系统参数设置->信息设置


设置 列表分页函数(下拉) 和 列表分页函数(列表) 相应的函数名,然后到e/class/userfun.php实现相应的函数,代码的话可以参考系统默认的sys_ShowListPage

动态列表页

这个又是在connect.php文件中实现的page1分页函数,要定制的化也是改代码

//前台分页
function page1($num,$line,$page_line,$start,$page,$search){
	global $fun_r;
	$num=(int)$num;
	$line=(int)$line;
	$page_line=(int)$page_line;
	$start=(int)$start;
	$page=(int)$page;
	if($num<=$line)
	{
		return '';
	}
	$search=RepPostStr($search,1);
	$url=eReturnSelfPage(0).'?page';
	$snum=2;//最小页数
	$totalpage=ceil($num/$line);//取得总页数
	$firststr='<a title="'.$fun_r['trecord'].'">&nbsp;<b>'.$num.'</b> </a>&nbsp;&nbsp;';
	//上一页
	if($page<>0)
	{
		$toppage='<a href="'.$url.'=0'.$search.'">'.$fun_r['startpage'].'</a>&nbsp;';
		$pagepr=$page-1;
		$prepage='<a href="'.$url.'='.$pagepr.$search.'">'.$fun_r['pripage'].'</a>';
	}
	//下一页
	if($page!=$totalpage-1)
	{
		$pagenex=$page+1;
		$nextpage='&nbsp;<a href="'.$url.'='.$pagenex.$search.'">'.$fun_r['nextpage'].'</a>';
		$lastpage='&nbsp;<a href="'.$url.'='.($totalpage-1).$search.'">'.$fun_r['lastpage'].'</a>';
	}
	$starti=$page-$snum<0?0:$page-$snum;
	$no=0;
	for($i=$starti;$i<$totalpage&&$no<$page_line;$i++)
	{
		$no++;
		if($page==$i)
		{
			$is_1="<b>";
			$is_2="</b>";
		}
		else
		{
			$is_1='<a href="'.$url.'='.$i.$search.'">';
			$is_2="</a>";
		}
		$pagenum=$i+1;
		$returnstr.="&nbsp;".$is_1.$pagenum.$is_2;
	}
	$returnstr=$firststr.$toppage.$prepage.$returnstr.$nextpage.$lastpage;
	return $returnstr;
}

帝国CMS教程

[showclasstemp] vs [listshowclass] 帝国CMS标签区别

本文详细对比帝国CMS两个栏目调用标签showclasstemp与listshowclass的差异。listshowclass是增强版,支持以逗号分隔传入多个父栏目ID,并提供更丰富的父级变量(如图片、简介、信息数、序号),而showclasstemp仅支持单栏目和三个基本父级变量,两者子栏目变量与标签语法相同。简单的单栏目导航二者均可,需要多栏目组合或展示父级更多信息时,优先选用listshowclass。

帝国CMS列表分页标签定制样式修改HTML方法

本文介绍了帝国CMS列表页面的默认分页标签实现,包括下拉式分页和列表式分页的后台模板定制方式。详细分析了核心函数sys_ShowListPage的代码逻辑,以及动态列表页中page1分页函数的处理流程。文章还说明了如何在系统参数中设置自定义分页函数,为用户提供更灵活的分页样式定制方案。

帝国CMS 8.0搜索结果页修复:支持灵动标签与标题高亮

帝国CMS 8.0默认搜索结果列表页不支持SQL查询、灵动标签等调用,通过修改e/search/result/index.php,引入函数文件并调整查询,即可正常使用各类标签,同时实现搜索关键词在标题中的红色高亮。本文提供完整可用代码。

帝国CMS图片水印不支持webp格式解决办法

本文为一组PHP图像处理函数,主要实现图片缩放与加水印功能。ResizeImage函数可按指定宽高及比例对图片进行裁剪或缩放,支持jpg、png、gif、webp等格式。imageWaterMark函数可为背景图添加图片或文字水印,支持九种位置定位和透明度控制,兼容多种图片格式。

亲测可用帝国CMS完美无报错Sitemap

一、个人实测踩坑总结最近给帝国CMS站点配置网站地图,踩了一大堆坑,要么报PHP version语法错误,要么XML格式不

帝国CMS图片裁剪Cannot read properties of null (ReloadChangeFilePage)

最近搭建、维护帝国CMS站点的朋友,基本都会遇到一个兼容性bug:新版Chrome/Edge浏览器后台图片裁剪、选择已上

帝国CMS插件

未找到合适的帝国 CMS 成品插件?

如有定制需求,或是想优化现有插件功能,欢迎随时联系沟通。

微信二维码 微信
QQ二维码 QQ

15年开发经验

自己做过站长,深知站长痛点

独立开发

自己编码、测试、维护,不是二道贩子

持续迭代

根据用户真实反馈持续优化

代码透明

核心逻辑清晰,不加密、不混淆

售后保障

提供安装指导和技术支持,随时响应

联系方式

微信 / QQ 即时沟通