织梦分页代码结构
我们需要了解织梦默认生成的分页HTML代码结构,了解结构后,我们才能用CSS进行精准的样式控制。

(图片来源网络,侵删)
织梦默认分页代码通常如下:
<div class="dede_pages">
<ul class="pagelist">
<span class="pageinfo">共 <strong>3</strong> 页/<strong>58</strong> 条记录</span>
<li><a class="a1" href="#">上一页</a></li>
<li><a href="#">1</a></li>
<li><span class="thisclass">2</span></li>
<li><a href="#">3</a></li>
<li><a href="#">下一页</a></li>
<li><a href="#">末页</a></li>
</ul>
</div>
关键节点说明:
<div class="dede_pages">: 最外层容器。<ul class="pagelist">: 分页列表容器。<li>: 每一个分页项(页码、按钮)都是一个列表项。<a>: 可点击的链接(页码、上一页、下一页等)。<span class="thisclass">: 当前页的页码,它是一个<span>标签,不可点击。<span class="pageinfo">: 显示总页数和总记录数的信息。
基础CSS样式(默认美化)
这是最常用的一套样式,简洁、清晰,适配大多数网站风格,您可以直接复制到您的CSS文件中(/templets/default/style/dedecms.css)。
/* 文章分页样式 */
.dede_pages {
text-align: center; /* 整体居中 */
margin: 20px 0; /* 上下间距 */
font-size: 12px;
font-family: Arial, "Microsoft YaHei", sans-serif;
}
.pagelist {
display: inline-block; /* 让ul能够被水平居中 */
list-style: none; /* 去掉列表默认的圆点 */
padding: 0;
margin: 0;
}
.pagelist li {
display: inline-block; /* 让li横向排列 */
margin: 0 5px; /* 页码之间的间距 */
}
.pagelist a, .pagelist span {
display: inline-block; /* 让a和span可以设置宽高和内边距 */
padding: 6px 12px; /* 内边距,决定按钮大小 */
border: 1px solid #ddd; /* 边框 */
border-radius: 3px; /* 圆角 */
color: #333; /* 文字颜色 */
text-decoration: none; /* 去掉下划线 */
transition: all 0.3s ease; /* 平滑过渡效果 */
}
/* 鼠标悬停在普通页码上的效果 */
.pagelist a:hover {
background-color: #f8f8f8;
border-color: #ccc;
}
/* 当前页样式 */
.pagelist .thisclass {
display: inline-block;
padding: 6px 12px;
border: 1px solid #007bff; /* 高亮边框颜色 */
border-radius: 3px;
color: #fff; /* 白色文字 */
background-color: #007bff; /* 背景色 */
cursor: default; /* 显示为默认光标,表示不可点击 */
}
/* 上一页、下一页、末页等特殊链接的样式 */
.pagelist .a1 {
color: #999;
cursor: default;
}
.pagelist .a1:hover {
background-color: transparent;
border-color: #ddd;
}
/* 页面信息样式 */
.pageinfo {
color: #999;
margin-left: 10px;
}
高级美化样式(按钮风格)
如果您想让分页看起来更像现代化的按钮,可以使用以下样式,这套样式更注重视觉层次感。

(图片来源网络,侵删)
/* 文章分页高级美化样式 */
.dede_pages {
text-align: center;
margin: 30px 0;
font-size: 0; /* 消除inline-block元素间的间隙 */
}
.pagelist {
display: inline-block;
list-style: none;
padding: 0;
margin: 0;
font-size: 14px; /* 恢复字体大小 */
}
.pagelist li {
display: inline-block;
margin: 0 2px;
}
.pagelist a, .pagelist span {
display: inline-block;
padding: 8px 15px;
border: none;
border-radius: 4px;
color: #555;
text-decoration: none;
background-color: #f0f0f0;
box-shadow: 0 1px 3px rgba(0,0,0,0.1);
transition: all 0.2s ease-in-out;
}
/* 鼠标悬停效果 */
.pagelist a:hover {
background-color: #e0e0e0;
box-shadow: 0 1px 5px rgba(0,0,0,0.15);
transform: translateY(-1px);
}
/* 当前页样式 */
.pagelist .thisclass {
display: inline-block;
padding: 8px 15px;
border-radius: 4px;
color: #fff;
background-color: #007bff; /* 使用蓝色作为主色调 */
box-shadow: 0 1px 3px rgba(0,123,255,0.3);
cursor: default;
}
/* 上一页、下一页等特殊链接 */
.pagelist .a1 {
color: #aaa;
background-color: #f5f5f5;
cursor: not-allowed; /* 更明确的不可点击状态 */
}
.pagelist .a1:hover {
background-color: #f5f5f5;
box-shadow: none;
transform: none;
}
/* 页面信息样式 */
.pageinfo {
color: #888;
margin-left: 15px;
font-size: 14px;
vertical-align: middle; /* 与分页按钮对齐 */
}
常见问题与解决方法
分页代码不显示或显示异常
可能原因:
- 过少:如果一篇文章内容不够一页,织梦默认不会生成分页。
- 分页标签缺失:在文章内容模板(
article_article.htm)中,没有调用分页标签。 - 标签调用错误:使用了错误的标签。
解决方案: 确保您的文章模板中有正确的分页标签,通常放在文章内容的末尾。
<div class="article-content">
{dede:field.body/}
</div>
<!-- 正确的分页调用标签 -->
<div class="dede_pages">
<ul class="pagelist">
{dede:pagelist listitem="info,index,end,pre,next,pageno" listsize="5"/}
</ul>
</div>
listitem:控制显示哪些分页项。listsize:控制当前页码左右显示的页码数量。
如何修改“上一页”、“下一页”的文字?
织梦默认的“上一页”是 <a class="a1">上一页</a>,a1 类的链接通常是禁用状态(如果已经是第一页或最后一页)。
修改模板文件
找到织梦的核心文件 include/arc.archives.class.php,搜索 GetPageListDM 函数,找到定义文字的地方进行修改。(此方法不推荐,因为升级织梦后会失效)

(图片来源网络,侵删)
使用CSS覆盖(推荐)
这是最灵活、最安全的方法,我们可以用CSS来隐藏默认文字,然后使用伪元素 :before 或 :after 来添加自定义文字。
/* 假设分页HTML结构如下 */
/* <li><a class="a1" href="#">上一页</a></li> */
/* 1. 隐藏默认文字 */
.pagelist .a1 {
color: transparent; /* 将文字颜色设为透明 */
position: relative; /* 为伪元素定位做准备 */
}
/* 2. 使用伪元素添加自定义文字 */
.pagelist .a1::before {
content: "‹"; /* 使用一个好看的左箭头符号 */
color: #999;
position: absolute;
left: 12px;
top: 50%;
transform: translateY(-50%);
font-size: 16px;
}
/* 对下一页做同样处理 */
.pagelist .a1:has(+ li .thisclass) /* 判断是否是最后一页的“下一页” */ {
color: transparent;
}
.pagelist .a1:has(+ li .thisclass)::after {
content: "›"; /* 右箭头符号 */
color: #999;
position: absolute;
right: 12px;
top: 50%;
transform: translateY(-50%);
font-size: 16px;
left: auto; /* 覆盖之前的left */
}
/* 注意:上面的 `:has()` 选择器较新,兼容性可能有问题,如果兼容性要求高,可以简化处理:*/
/* 只给“下一页”加一个右箭头 */
.pagelist li a:contains("下一页")::after { /* 注意::contains() 是jQuery语法,原生CSS不支持 */
/* ... */
}
/* 最稳妥的方法还是直接修改模板,或者接受默认文字。 */
更简单的CSS方案(推荐): 直接隐藏默认文字,用背景图或伪元素显示图标。
/* 隐藏上一页的默认文字 */
.pagelist .a1 {
text-indent: -9999px; /* 将文字移出可视区域 */
width: 30px; /* 设置一个固定宽度 */
padding: 0;
overflow: hidden;
}
/* 用伪元素添加一个简单的箭头 */
.pagelist .a1::before {
content: "‹";
text-indent: 0; /* 恢复文字 */
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
/* 下一页同理 */
如何让分页只在内容超过一定高度时才显示?
这需要结合CSS和一点JavaScript。
CSS:
/* 默认隐藏分页 */
.dede_pages {
display: none;
}
/* 当父容器有特定类时显示分页 */
.article-content.show-pagination + .dede_pages {
display: block;
}
JavaScript (放在页面底部):
document.addEventListener('DOMContentLoaded', function() {
const articleContent = document.querySelector('.article-content');
const pagination = document.querySelector('.dede_pages');
if (articleContent && pagination) {
// 检查内容高度,比如超过1000px就显示分页
if (articleContent.scrollHeight > 1000) {
articleContent.classList.add('show-pagination');
}
}
});
article-content是包裹文章内容的div。scrollHeight是元素内容的总高度(包括不可见部分)。
- 基础优先:从第二部分的 基础CSS样式 开始,它已经能满足大部分需求。
- 结构清晰:确保你的HTML结构是织梦默认生成的,这样CSS才能生效。
- 善用开发者工具:如果样式不生效,使用浏览器(如Chrome、Firefox)的开发者工具(F12)来检查元素,看看是CSS选择器错误还是优先级问题。
- 修改需谨慎:尽量不要直接修改织梦核心文件,优先使用模板标签和CSS来解决样式问题。
希望这份详细的指南能帮助您完美地美化织梦文章的分页功能!
