织梦分页怎么设置?列表页、文章页分页一次讲清楚
织梦怎么做分页:从列表分页到内容分页的完整教程
织梦 CMS(DedeCMS)曾经是国内使用非常广泛的内容管理系统,很多企业站、资讯站、下载站都基于织梦搭建。对于一个内容型网站来说,“分页”是非常基础但又十分重要的功能。分页做得好,不仅能提升用户浏览体验,还能改善页面加载速度,并且有助于网站结构优化和搜索引擎抓取。
很多新手在使用织梦时,经常会遇到这样的问题:列表页怎么分页?文章内容太长怎么分页?自定义模板中的分页标签怎么写?分页样式怎么修改?分页不显示怎么办? 本文将围绕“织梦怎么做分页”这个主题,系统讲解织梦分页的实现方法、常用标签、模板写法以及常见问题解决方案。
一、织梦分页主要分为哪几种?
在织梦中,常见的分页主要有以下几类:
- 栏目列表页分页
- 搜索结果页分页
- 标签列表页分页
- 文章内容分页
- 自定义 SQL 列表分页
- 会员中心或自定义页面分页
其中最常用的是栏目列表分页和文章内容分页。栏目列表分页通常用于新闻列表、产品列表、案例列表等页面;文章内容分页则用于一篇文章内容过长时,将正文拆分成多页显示。
二、织梦栏目列表页怎么做分页?
栏目列表页分页是织梦最常见的分页场景。例如新闻栏目中有 100 篇文章,每页显示 10 篇,那么就需要分页成 10 页。
在织梦中,栏目列表页分页主要依赖两个标签:
{dede:list pagesize='10'}
[field:title/]
[field:pubdate function="MyDate('Y-m-d',@me)"/]
{/dede:list}
{dede:pagelist listitem="info,index,end,pre,next,pageno" listsize="5"/}
上面代码中:
{dede:list}用来调用栏目文章列表;pagesize='10'表示每页显示 10 条内容;{dede:pagelist}用来输出分页导航;listitem用来控制分页显示哪些元素;listsize='5'表示分页数字最多显示 5 个。
三、栏目列表分页模板完整示例
假设你有一个新闻列表模板,文件路径可能是:
/templets/default/list_article.htm
你可以这样写:
{dede:field.title/}_{dede:global.cfg_webname/}
{dede:list pagesize='10' titlelen='80'}
-
[field:title/]
[field:pubdate function="MyDate('Y-m-d',@me)"/]
{/dede:list}
{dede:pagelist listitem="info,index,end,pre,next,pageno" listsize="5"/}
保存模板后,进入织梦后台,更新栏目 HTML 或更新整站缓存,即可看到分页效果。
四、{dede:pagelist} 标签参数详解
织梦分页主要通过 {dede:pagelist} 标签实现。常用写法如下:
{dede:pagelist listitem="info,index,end,pre,next,pageno" listsize="5"/}
1. listitem 参数
listitem 用来控制分页导航中显示哪些项目。
常见值包括:
| 参数 | 说明 |
|---|---|
info |
显示分页统计信息,例如“共多少页多少条” |
index |
首页 |
pre |
上一页 |
pageno |
页码数字 |
next |
下一页 |
end |
末页 |
option |
下拉跳转分页 |
例如只显示上一页、页码、下一页:
{dede:pagelist listitem="pre,pageno,next" listsize="5"/}
如果想显示完整分页:
{dede:pagelist listitem="info,index,pre,pageno,next,end,option" listsize="5"/}
2. listsize 参数
listsize 表示分页数字按钮显示数量。例如:
{dede:pagelist listsize="7"/}
表示分页条中最多显示 7 个页码数字。
如果总页数很多,例如 50 页,分页不会一次性全部显示,而是根据当前位置显示附近的页码。
五、织梦内容页文章怎么分页?
除了列表页分页之外,一篇文章内容很长时,也可以进行文章内容分页。比如一篇教程有 8000 字,如果全部显示在一个页面,页面会很长,加载也比较慢。此时可以使用织梦内容分页功能。
织梦内容分页通常有两种方式:
- 在后台编辑文章时手动插入分页符;
- 在文章模板中调用内容分页标签。
1. 后台插入分页符
进入织梦后台,编辑某篇文章,在正文中需要分页的位置插入分页符:
#p#分页标题#e#
例如:
第一部分内容……
#p#第二页:安装步骤#e#
第二部分内容……
#p#第三页:使用方法#e#
第三部分内容……
这样生成文章后,织梦会将正文拆分成多页。
如果不需要分页标题,也可以写成:
#p#副标题#e#
其中“副标题”会作为分页导航中的标题显示。
六、文章内容页分页模板怎么写?
文章内容页模板一般是:
/templets/default/article_article.htm
在文章内容页中,正文通常通过以下标签调用:
{dede:field.body/}
如果文章做了分页,那么还需要在正文下方添加分页标签:
{dede:field.body/}
{dede:pagebreak/}
完整示例:
{dede:field.title/}
{dede:field.body/}
{dede:pagebreak/}
{dede:pagebreak/} 就是内容页分页标签,用来输出文章分页导航。
七、文章分页常见样式优化
默认的内容分页样式可能不够美观,可以通过 CSS 进行优化。例如:
.article-page {
text-align: center;
margin: 30px 0;
}
.article-page a,
.article-page span {
display: inline-block;
padding: 6px 12px;
margin: 0 4px;
border: 1px solid #ddd;
color: #333;
text-decoration: none;
border-radius: 3px;
}
.article-page a:hover {
background: #0074d9;
color: #fff;
border-color: #0074d9;
}
.article-page .thisclass {
background: #0074d9;
color: #fff;
border-color: #0074d9;
}
如果发现分页当前页样式没有生效,可以查看生成后的 HTML 中当前页对应的 class 名称。有些版本可能使用 thisclass,有些模板可能需要根据实际输出结构调整 CSS。
八、搜索结果页分页怎么做?
织梦搜索结果页一般使用 search.htm 模板。搜索分页和列表页分页类似,但调用方式有所不同。
搜索结果页常见代码如下:
{dede:list pagesize='10'}
[field:title/]
[field:description function="cn_substr(@me,160)"/]
{/dede:list}
{dede:pagelist listitem="info,index,pre,pageno,next,end" listsize="5"/}
不过需要注意,不同织梦版本或不同搜索模板中,搜索结果可能使用的是特定搜索标签。如果你的搜索页分页不显示,需要检查搜索模板是否支持 {dede:pagelist},以及后台是否已经正确生成或动态访问。
九、标签页分页怎么做?
标签页通常指 Tag 页面,例如:
/tags.php?/关键词/
如果你的网站使用 Tag 标签聚合页,也可能需要分页。
在 Tag 模板中,常见写法类似:
{dede:list pagesize='10'}
[field:title/]
{/dede:list}
{dede:pagelist listitem="pre,pageno,next" listsize="5"/}
不过 Tag 页面是否能正常分页,取决于你使用的织梦版本、Tag 伪静态规则、模板标签支持情况。如果你使用了二次开发版本,分页规则可能会有所不同。
十、自定义 SQL 列表如何分页?
有些网站模板中需要调用特定条件的数据,例如只显示推荐文章、热门文章、某个模型的数据等。普通的 {dede:arclist} 标签不能分页,很多新手会误以为给 arclist 加上 pagesize 就能分页,其实不行。
需要注意:
织梦中
{dede:arclist}主要用于固定数量调用文章,不支持像栏目列表那样直接分页。
如果要实现分页,通常建议使用:
{dede:list pagesize='10'}
如果必须自定义 SQL 并分页,则需要使用织梦的 datalist 或进行二次开发。
常见思路是:
- 编写自定义 PHP 文件;
- 查询数据库总记录数;
- 根据当前页码计算
LIMIT; - 输出数据列表;
- 调用或自写分页函数。
例如分页逻辑大致如下:
$page = isset($_GET['page']) ? intval($_GET['page']) : 1;
$page = max($page, 1);
$pagesize = 10;
$start = ($page - 1) * $pagesize;
$sql = "SELECT * FROM dede_archives WHERE arcrank >= 0 ORDER BY id DESC LIMIT $start,$pagesize";
然后再统计总数:
$countSql = "SELECT COUNT(*) AS total FROM dede_archives WHERE arcrank >= 0";
根据总数计算总页数:
$totalPage = ceil($total / $pagesize);
最后输出分页链接。
不过对于普通用户来说,如果不是必须做复杂功能,建议优先使用织梦原生列表分页。
十一、分页不显示的常见原因
很多人在写好分页标签后,发现页面上没有分页,或者分页只有一页。这通常有以下几种原因。
1. 使用了 {dede:arclist} 而不是 {dede:list}
这是最常见的问题。
错误示例:
{dede:arclist row='10'}
[field:title/]
{/dede:arclist}
{dede:pagelist/}
arclist 不负责列表分页,所以分页可能不会正常显示。
正确示例:
{dede:list pagesize='10'}
[field:title/]
{/dede:list}
{dede:pagelist listitem="pre,pageno,next" listsize="5"/}
2. 栏目文章数量不足
如果栏目中只有 5 篇文章,而你设置:
{dede:list pagesize='10'}
那么只有一页,自然不会出现多页分页。可以将 pagesize 改小测试:
{dede:list pagesize='2'}
如果这时出现分页,就说明标签没有问题,只是文章数量不足。
3. 模板没有绑定到栏目
织梦中每个栏目可以设置列表模板。如果你修改的是 list_article.htm,但栏目实际使用的是其他模板,那么你改的分页代码不会生效。
解决方法:
进入后台:
核心 → 网站栏目管理 → 修改栏目 → 高级选项
检查栏目列表模板是否为你修改的模板文件。
4. 没有更新栏目或缓存
织梦很多页面是生成静态 HTML 的,如果修改模板后没有更新页面,前台仍然显示旧内容。
解决方法:
进入后台:
生成 → 更新栏目 HTML
或者:
生成 → 更新所有
如果开启了缓存,还可以清理缓存后再访问。
5. 分页标签位置错误
{dede:pagelist} 应该放在 {dede:list} 标签外部,而不是内部。
错误写法:
{dede:list pagesize='10'}
[field:title/]
{dede:pagelist/}
{/dede:list}
正确写法:
{dede:list pagesize='10'}
[field:title/]
{/dede:list}
{dede:pagelist/}
6. 栏目类型不支持
如果栏目是封面栏目,可能不会按普通列表页方式分页。需要确认栏目类型是否为“最终列表栏目”或可正常调用列表数据。
十二、织梦分页 URL 规则说明
织梦生成静态分页时,常见分页 URL 类似:
/list_1_1.html
/list_1_2.html
/list_1_3.html
其中:
- 第一个数字通常表示栏目 ID;
- 第二个数字表示页码。
不同设置下,分页 URL 也可能是:
/news/list_2.html
/news/list_3.html
如果你开启了伪静态或做了 URL 规则修改,分页地址也可能发生变化。
需要注意的是,修改分页 URL 规则时要谨慎,因为不正确的规则可能导致分页链接打不开,甚至影响搜索引擎收录。
十三、分页对 SEO 有什么影响?
分页不仅是前端展示问题,也和 SEO 有一定关系。
1. 避免单页内容过多
如果一个栏目有几百篇文章,全部放在一个页面中,会导致页面体积过大、加载速度慢。分页可以让页面结构更清晰。
2. 保持分页页面可访问
分页页面应该能够正常打开,不要出现第一页能打开、第二页 404 的情况。
3. 分页标题建议有区分
例如栏目第二页的标题可以带上页码:
新闻资讯_第2页_网站名称
这样可以减少分页页面标题重复的问题。
4. 合理控制每页数量
一般新闻列表每页显示 10 到 20 条比较合适;产品列表可以根据页面布局显示 12、16 或 20 条。数量过少会造成分页过多,数量过多会影响加载速度。
十四、分页样式美化建议
分页虽然只是一个小组件,但对用户体验影响明显。建议在设计分页时注意以下几点:
- 当前页要明显突出;
- 首页、上一页、下一页、末页要清晰;
- 移动端按钮不要太小;
- 页码数量不要过多;
- 分页链接颜色要和网站主题一致;
- 不要让分页区域离列表太远;
- 保持分页结构简洁,避免堆砌复杂元素。
一个通用分页样式可以这样写:
.pagination {
text-align: center;
margin: 35px 0;
font-size: 14px;
}
.pagination a,
.pagination span {
display: inline-block;
min-width: 34px;
height: 34px;
line-height: 34px;
margin: 0 3px;
padding: 0 8px;
border: 1px solid #ddd;
color: #333;
text-decoration: none;
box-sizing: border-box;
}
.pagination a:hover {
background: #1e88e5;
border-color: #1e88e5;
color: #fff;
}
.pagination .thisclass {
background: #1e88e5;
border-color: #1e88e5;
color: #fff;
}
模板中可以这样使用:
{dede:pagelist listitem="index,pre,pageno,next,end" listsize="5"/}
十五、移动端分页怎么优化?
现在很多网站都有移动端页面,如果分页按钮太小,用户点击会很困难。移动端分页建议:
- 减少页码数量;
- 保留“上一页”和“下一页”;
- 按钮高度不低于 36px;
- 间距适当增加;
- 避免显示太长的统计文字。
移动端可以这样写:
{dede:pagelist listitem="pre,next" listsize="3"/}
CSS 示例:
.m-page {
display: flex;
justify-content: space-between;
margin: 20px 15px;
}
.m-page a {
flex: 1;
text-align: center;
margin: 0 5px;
height: 38px;
line-height: 38px;
background: #f5f5f5;
color: #333;
text-decoration: none;
border-radius: 4px;
}
对于移动端来说,简单的“上一页 / 下一页”有时候比复杂页码更实用。
十六、织梦分页实战检查清单
如果你想快速判断织梦分页是否写对,可以按照下面清单检查:
- 是否使用了
{dede:list pagesize='数量'}? - 是否在
{dede:list}外部写了{dede:pagelist}? - 栏目文章数量是否超过每页显示数量?
- 当前栏目是否绑定了正确的列表模板?
- 修改模板后是否重新生成了静态页面?
- 栏目类型是否为列表栏目?
- 分页 CSS 是否隐藏了分页元素?
- 分页链接是否能正常打开?
- 是否错误使用了
{dede:arclist}? - 内容分页是否添加了
{dede:pagebreak/}?
只要逐项排查,大多数分页问题都能解决。
十七、总结
织梦做分页并不复杂,关键是要区分不同场景。栏目列表分页主要使用 {dede:list pagesize='10'} 和 {dede:pagelist};文章内容分页主要使用正文中的分页符 #p#分页标题#e# 和模板中的 {dede:pagebreak/}。如果是普通栏目列表,不建议使用 {dede:arclist} 来实现分页,因为它本身不承担分页功能。
简单来说,织梦分页的核心写法如下:
{dede:list pagesize='10'}
[field:title/]
{/dede:list}
{dede:pagelist listitem="info,index,pre,pageno,next,end" listsize="5"/}
文章内容分页的核心写法如下:
{dede:field.body/}
{dede:pagebreak/}
掌握这两种写法后,基本就能解决织梦网站中绝大多数分页需求。后续如果要做更复杂的自定义分页,例如 SQL 分页、筛选分页、Ajax 分页等,则需要结合 PHP 和数据库查询进行二次开发。对于普通企业站和资讯站而言,织梦自带分页功能已经足够使用。