- PHP后端代码:用于生成分页的HTML结构。
- CSS前端样式:用于美化这个HTML结构,让它看起来更美观。
下面我将详细解释这两部分的位置以及如何修改它们。

PHP后端代码:分页逻辑在哪里?
织梦的分页功能是由一个核心的PHP函数 GetPageList() 生成的,这个函数位于核心文件中。
核心文件位置:
/include/arc.archives.class.php (用于文章列表/内容页)
/include/arc.listview.class.php (用于自定义列表页)
这个函数在生成列表页(如首页、列表页、搜索页等)时被调用,用来输出分页的HTML代码。
如何找到并修改分页的HTML结构?

直接修改核心文件不是一个好习惯,因为升级时会被覆盖,推荐的方法是通过修改模板文件来覆盖或自定义分页的HTML结构。
在模板文件中直接调用(最简单)
在需要显示分页的模板文件中(通常是 list_article.htm 或 index.htm),织梦提供了一个专门的标签 {dede:pagelist listitem="info,index,end,pre,next,pageno" listsize="5" /}。
这个标签会直接调用 GetPageList() 函数并输出其默认的HTML结构。
示例:
在你的列表模板文件 list_article.htm 的底部,找到类似这样的代码:

<div class="dede_pages">
<ul class="pagelist">
{dede:pagelist listitem="info,index,end,pre,next,pageno" listsize="5" /}
</ul>
</div>
这里的 {dede:pagelist} 就是生成分页的地方,你可以通过修改它的 listitem 属性来控制显示哪些分页元素(如首页、上一页、页码、下一页、末页等)。
自定义分页HTML结构(推荐,最灵活)
如果你想要完全自定义分页的HTML结构(想用 Bootstrap 的分页组件),最好的方法是覆盖 GetPageList() 函数的输出。
操作步骤:
- 找到当前使用的模板目录:通常是
/templets/default/或你自定义的模板目录。 - 创建一个PHP函数文件:在模板目录下创建一个名为
php/的文件夹(如果不存在的话),然后在里面新建一个文件,myfunctions.php。 - 编写自定义分页函数:在
myfunctions.php文件中,编写一个与核心函数同名的新函数GetPageList(),你的新函数会优先被调用。
示例 myfunctions.php 文件内容:
<?php
/**
* 自定义分页函数,覆盖系统默认的
* @param int $list_len 列表宽度
* @param string $listitem 列表样式
* @param string $listtype 列表类型
* @param string $addinfo 附加信息
* @return string
*/
function GetPageList($list_len, $listitem = "info,index,end,pre,next,pageno", $listtype = "list", $addinfo = "")
{
// 引入核心类文件,确保我们能访问到原始的分页数据
// 注意:这个文件路径可能需要根据你的实际情况调整
// 通常在模板被解析时,全局变量 $this 已经包含了分页信息
global $dsql, $PageList;
// $PageList 已经存在(通常由DedeCMS预先计算好),我们可以直接使用它来构建新的HTML
if (is_array($PageList)) {
$prepage = $PageList['prepage'];
$nextpage = $PageList['nextpage'];
$indexpage = $PageList['indexpage'];
$endpage = $PageList['endpage'];
$listdd = $PageList['listdd'];
$pageno = $PageList['pageno'];
$totalpage = $PageList['totalpage'];
$itemnum = $PageList['itemnum'];
$totalresult = $PageList['totalresult'];
// --- 开始构建自定义的HTML结构 ---
// 这里以 Bootstrap 5 的分页为例
$mainframe = '<nav aria-label="Page navigation"><ul class="pagination justify-content-center">';
// 上一页
if ($prepage) {
$mainframe .= '<li class="page-item"><a class="page-link" href="' . $prepage . '">上一页</a></li>';
} else {
$mainframe .= '<li class="page-item disabled"><span class="page-link">上一页</span></li>';
}
// 页码
$mainframe .= $listdd;
// 下一页
if ($nextpage) {
$mainframe .= '<li class="page-item"><a class="page-link" href="' . $nextpage . '">下一页</a></li>';
} else {
$mainframe .= '<li class="page-item disabled"><span class="page-link">下一页</span></li>';
}
$mainframe .= '</ul></nav>';
// 信息
if (strpos($listitem, 'info') !== false) {
$mainframe .= '<div class="text-center">共 <strong>' . $totalresult . '</strong> 条记录</div>';
}
return $mainframe;
}
// 如果没有预先生成 $PageList,可以调用原始函数再处理(此方法较复杂,不推荐)
// ...
}
?>
- 引入自定义函数文件:在你的模板文件(如
list_article.htm)的顶部,使用{dede:php include 'php/myfunctions.php';/}来引入这个文件。{dede:include filename="head.htm"/} {dede:php include 'php/myfunctions.php';/} <!-- 你的列表内容 --> {dede:arclist titlelen='42' row='10'} <a href="[field:arcurl/]">[field:title/]</a> {/dede:arclist} <!-- 分页调用 --> {dede:pagelist listitem="info,index,end,pre,next,pageno" listsize="5" /} {dede:include filename="foot.htm"/}
通过这种方式,你就可以完全控制分页的HTML结构,使其符合任何前端框架(如 Bootstrap, Foundation 等)的样式规范。
CSS前端样式:默认样式在哪里?
默认的CSS样式通常存放在模板的CSS文件中。
默认CSS文件位置:
/templets/default/style/ 目录下,通常是 dedecms.css 或 style.css。
默认分页的CSS类名:
如果你查看默认生成的分页HTML,你会发现它带有一些特定的CSS类:
<div class="dede_pages">
<ul class="pagelist">
<li><span class="pageinfo">共 45 条</span></li>
<li><a href="list_1_1.html">首页</a></li>
<li><a href="list_1_3.html">上一页</a></li>
<li><a href="list_1_2.html">2</a></li>
<li><a href="list_1_3.html">3</a></li>
<li class="thisclass"><a href="list_1_4.html">4</a></li>
<li><a href="list_1_5.html">5</a></li>
<li><a href="list_1_6.html">6</a></li>
<li><a href="list_1_7.html">7</a></li>
<li><a href="list_1_5.html">下一页</a></li>
<li><a href="list_1_45.html">末页</a></li>
</ul>
</div>
主要的CSS类名有:
.dede_pages:分页容器.pagelist:分页列表.pageinfo:分页信息(如“共45条”).thisclass:当前页码所在的<li>元素
如何修改默认样式?
最简单的方法是直接在你模板的CSS文件(如 /templets/default/style/dedecms.css)末尾添加或覆盖这些类的样式。
示例:将默认分页改成简单的行内样式
/* 在你的CSS文件中添加或修改以下样式 */
/* 分页容器 */
.dede_pages {
margin: 20px 0;
text-align: center;
font-size: 12px;
}
/* 分页列表 */
.dede_pages .pagelist {
display: inline-block; /* 让列表水平排列 */
list-style: none;
padding: 0;
margin: 0;
}
/* 分页列表中的每一项 */
.dede_pages .pagelist li {
float: left; /* 或者使用 display: inline-block; */
margin: 0 5px;
}
/* 分页链接 */
.dede_pages .pagelist li a {
display: block;
padding: 5px 10px;
border: 1px solid #ddd;
border-radius: 3px;
text-decoration: none;
color: #333;
}
/* 鼠标悬停效果 */
.dede_pages .pagelist li a:hover {
background-color: #f8f8f8;
border-color: #ccc;
}
/* 当前页样式 */
.dede_pages .pagelist li.thisclass a {
background-color: #007bff;
color: #fff;
border-color: #007bff;
}
/* 禁用状态(如末页后的“下一页”) */
.dede_pages .pagelist li.disabled span {
color: #999;
background-color: #f5f5f5;
border-color: #ddd;
cursor: not-allowed;
}
| 部分 | 位置 | 修改方法 |
|---|---|---|
| PHP后端代码 | /include/arc.archives.class.php (核心文件) |
推荐:在模板中使用 {dede:pagelist} 标签,或通过在模板目录下创建 php/myfunctions.php 文件来自定义 GetPageList() 函数,完全控制HTML输出。 |
| CSS前端样式 | /templets/default/style/dedecms.css (模板CSS文件) |
直接在模板的CSS文件中修改或添加 .dede_pages, .pagelist, .thisclass 等类的样式。 |
对于大多数用户来说,直接修改CSS文件来美化默认分页是最简单直接的方法,如果你需要更灵活的控制,比如使用前端框架,那么采用自定义PHP函数的方法是最佳选择。
