在织梦DedeCMS中,分页功能是动态生成的,它不像文章内容那样直接存储在数据库的一个字段里,分页标签的核心是 {dede:pagebreak/} 这个系统内置的标签,它会根据你在后台设置的每页显示数,自动将长文章分割成多页,并生成上一页、页码、下一页等导航链接。

下面我将分几种常见场景,为你详细解析如何调用和使用分页标签。
核心标签:{dede:pagebreak/}
这是所有分页功能的基础,你只需要在你希望分页的地方(通常是文章内容末尾)放置这个标签即可。
示例:
在 article_article.htm (文章内容页模板)中,通常这样使用:
{dede:field.body/}
{dede:pagebreak/}
{dede:pagebreak/} 在后台生成的效果类似于:
<a href="你的文章链接?pageno=2">下一页</a> <a href="你的文章链接?pageno=3">3</a> ...

文章内容页分页调用
这是最常见的场景,当一篇文章很长时,需要将其分割成多页显示。
页模板 (article_article.htm) 中
你只需要在文章内容 {dede:field.body/} 之后,加上 {dede:pagebreak/} 标签即可。
完整示例代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">{dede:field.title/} - {dede:global.cfg_webname/}</title>
</head>
<body>
<h1>{dede:field.title/}</h1>
<div class="info">
<span>作者:{dede:field.writer/}</span> |
<span>时间:{dede:field.pubdate function="MyDate('Y-m-d H:i',@me)"/}</span> |
<span>来源:{dede:field.source/}</span> |
<span>点击:{dede:field.click/}</span>
</div>
<div class="content">
{dede:field.body/}
<!-- 在这里放置分页标签 -->
{dede:pagebreak/}
</div>
<!-- 上一篇/下一篇 -->
<div class="arcpages">
{dede:prenext get='pre'/}
{dede:prenext get='next'/}
</div>
</body>
</html>
说明:

{dede:field.body/}:调用文章内容,如果内容中包含了[page]或者你通过后台“内容分页”功能插入了分页符,织梦会自动将其分割。{dede:pagebreak/}:生成页码导航。{dede:prenext get='pre'}和{dede:prenext get='next'}:分别调用上一篇和下一篇文章的链接。
后台设置
确保在发布文章时,已经正确设置了分页。
- 在编辑器中手动分页 在文章编辑器(如ckeditor)中,将光标定位到需要分页的位置,点击“插入分页符”的按钮(通常是一个带有“分页”或“Page”字样的图标)。
- 通过后台“内容分页”功能 在文章编辑界面的下方,有一个“内容分页”选项,你可以输入每页显示的字数,系统会自动帮你插入分页符。
列表页(首页、栏目页、搜索页等)分页调用
列表页分页是指当栏目下的文章很多,需要分页显示文章列表时的情况。
在列表页模板 (list_*.htm, index.htm 等) 中
列表页的分页标签通常放在文章列表循环 {dede:list} 的外部。
完整示例代码 (以栏目页为例):
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">{dede:field.title/} - {dede:global.cfg_webname/}</title>
</head>
<body>
<h1>{dede:field.title/}</h1>
<div class="article_list">
<!-- {dede:list} 是循环调用文章列表的标签 -->
{dede:list pagesize='10' titlelen='50'}
<div class="item">
<h2><a href="[field:arcurl/]">[field:title/]</a></h2>
<p class="desc">[field:description function='cn_substr(@me, 100)'/]...</p>
<div class="info">
<span>时间:[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
<span>点击:[field:click/]</span>
</div>
</div>
{/dede:list}
</div>
<!-- 在这里放置列表页的分页标签 -->
<div class="page_navigation">
{dede:pagelist listsize='4' listitem='info,index,pre,next,pageno'}
</div>
</body>
</html>
关键标签解析:
{dede:list}: 循环输出文章列表。pagesize='10': 设置每页显示10条文章,这个值必须与后台 -> 栏目管理 -> 修改栏目 -> “列表选项”中的“每页显示数”保持一致,否则分页会出错。
{dede:pagelist}: 这是列表页分页导航的核心标签。listsize='4': 显示页码的数量,1 2 3 4 5 ... 10,listsize='4'会显示前后各4个页码。listitem='...': 定义分页导航里显示哪些项目,常用值有:info: 显示总页数、总条数等信息(如:共 10 页/50 条)index: 显示首页pre: 显示上一页next: 显示下一页pageno: 显示页码option: 显示下拉跳转框plus: 显示+/-
你可以根据需要自由组合 listitem 的值,listitem='info,index,pre,next,pageno,option'。
搜索结果页分页调用
搜索结果页的分页调用方式与列表页完全相同。
在 search.htm 模板中,将文章列表循环和分页标签按如下方式放置:
<!-- 搜索表单... -->
<div class="search_results">
{dede:list}
<h3><a href="[field:arcurl/]">[field:title/]</a></h3>
<p>[field:info/]...</p>
{/dede:list}
</div>
<div class="page_navigation">
{dede:pagelist listitem='info,index,pre,next,pageno'}
</div>
这里的 {dede:list} 标签在搜索页中会自动变为搜索结果的循环,{dede:pagelist} 则负责搜索结果页的分页。
常见问题与注意事项
-
分页不生效/显示异常?
- 检查
pagesize:确保模板中{dede:list}的pagesize值与后台栏目设置的“每页显示数”一致。 - 检查标签位置:列表页的分页标签
{dede:pagelist}一定要放在{dede:list}循环的外面。 - 检查文章分页:如果是文章内容页分页不生效,请检查文章内容中是否插入了分页符(
[page]或通过编辑器按钮插入)。 - 检查SEO设置:如果开启了“启用伪静态”,请确保分页的URL规则(如
/a/1/2.html)与服务器伪静态规则匹配。
- 检查
-
如何自定义分页样式?
{dede:pagelist}默认生成的HTML结构比较简单,通常用CSS类名(如page-link,page-num,page-info等)来定义样式,你可以通过修改/include/arc.listview.class.php文件来修改生成的HTML结构,但这有一定风险,更推荐的是用CSS来覆盖默认样式。示例CSS:
.page_navigation { text-align: center; margin: 20px 0; } .page_navigation a { display: inline-block; padding: 5px 10px; margin: 0 3px; border: 1px solid #ddd; text-decoration: none; color: #333; } .page_navigation a:hover { background-color: #f0f0f0; } .page_navigation .thisclass { /* 当前页样式 */ background-color: #007bff; color: #fff; border-color: #007bff; } .page_navigation .pageinfo { /* 信息样式 */ padding: 5px 10px; color: #666; }
| 场景 | 核心标签 | 位置 | 说明 |
|---|---|---|---|
| 页分页 | {dede:pagebreak/} |
放在 {dede:field.body/} 之后 |
用于分割长文章内容。 |
| 列表页分页 | {dede:pagelist} |
放在 {dede:list} 循环之外 |
用于分页显示文章列表。 |
| 搜索页分页 | {dede:pagelist} |
放在 {dede:list} 循环之外 |
用于分页显示搜索结果。 |
掌握了这三个核心场景的用法,你就可以在织梦DedeCMS中自如地调用和实现各种分页功能了。
