DedeCMS 的内容分页功能是通过模板标签和系统函数协同工作的,核心在于两个部分:

- 模板标签页模板(
article_article.htm)中,你需要使用{dede:pagebreak/}标签来生成分页链接。 - 后台设置:需要在后台开启并配置分页相关的选项。
下面是详细的步骤和代码示例。
第一步:后台设置(至关重要)
在修改模板之前,请务必确保后台的分页功能已经正确开启。
-
登录 DedeCMS 后台。
-
进入 系统 -> 系统基本参数 -> 核心设置。
(图片来源网络,侵删) -
找到以下几项并进行设置:
- 是否启用内容分页:
- 选择 “是”,这是启用分页功能的前提。
- 内容分页符号:
- 这是分页符,默认是
<hr style="page-break-interlude: always;" class="pagebreak">编辑器中点击“分页”按钮时,插入的就是这个符号。 - 你也可以自定义,
[page_break]或其他,但需要确保与模板中的处理方式一致,通常保持默认即可。
- 这是分页符,默认是
- 列表每页显示条数(分页):
这个设置通常用于列表页,但对内容页的分页逻辑也有影响,保持默认值 20 或其他合理数值即可。
- 自动提取分页标记:
- 选择 “是”,这样系统会自动识别内容中的分页符,并据此进行分页。
- 是否启用内容分页:
-
保存设置。
第二步:修改内容页模板 (article_article.htm)
这是实现分页显示的核心步骤,你需要找到你的内容页模板文件,它通常位于 /templets/default/ 目录下,文件名为 article_article.htm。
在模板中,找到文章正文内容的位置,也就是 这是最常用、最简单的方法,它会在文章正文的分页符处自动断开,并生成上一页/下一页的导航。 修改前(大概样子): 修改后(代码): 工作原理:
生成的分页导航 HTML 结构大概是这样的: 你可以通过 CSS 来美化这个 如果你对分页的样式和位置有更高的要求,不想使用 正文部分:同样使用 自定义分页导航:在模板的任意位置(比如文章内容下方),手动编写分页导航的 HTML 结构,并使用 DedeCMS 的变量来填充链接和文本。 标签解释: 示例: 完成模板修改后,你在后台发布或编辑文章时,需要手动插入分页符。 重要提示:分页符是区分内容页的关键,没有分页符, 问题:为什么我设置了 问题:分页导航样式很难看,如何自定义? 解决方案:方案一中的分页导航会生成一个带有 对于方案二,你可以完全控制 HTML 结构,然后编写对应的 CSS,自由度更高。 问题:我想让首页、列表页的摘要只显示第一页内容,怎么办? 对于绝大多数用户来说,方案一已经足够满足需求,简单、高效,只有当你对分页的呈现方式有特殊要求时,才需要考虑方案二。{dede:field.body/}
最简单直接的分页(推荐)
{dede:field.body/}。{dede:pagebreak/} 标签将其包裹起来。<div class="article-content">
{dede:field.body/}
</div>
<div class="article-content">
{dede:pagebreak/}
</div>
{dede:pagebreak/} 这个标签会做两件事:
field.body 中的分页符(<hr class="pagebreak">),并将内容按照分页符切割成多个部分。<ul class="dede_pages">
<li><span class="pageinfo">共 <strong>3</strong>页/<strong>10</strong>条</span></li>
<li><a href="/article/1.html">上一页</a></li>
<li><a href="/article/1.html">1</a></li>
<li class="thisclass"><a href="/article/2.html">2</a></li>
<li><a href="/article/3.html">3</a></li>
<li><a href="/article/3.html">下一页</a></li>
</ul>
.dede_pages 列表。
更灵活的自定义分页(高级)
{dede:pagebreak/} 自动生成的导航,可以采用更灵活的方式。
{dede:pagebreak/} 来处理正文内容的分页。<div class="article-content">
{dede:pagebreak/}
</div>
<!-- 自定义分页导航 -->
<div class="my-custom-pagination">
<!-- 上一页 -->
{dede:prenext get='pre'/}
<!-- 中间页码 -->
<ul class="page-numbers">
{dede:pagelist listsize='4' listitem='index,end,pre,next,pageno'}
{/dede:pagelist}
</ul>
<!-- 下一页 -->
{dede:prenext get='next'/}
</div>
{dede:prenext get='pre'}:获取上一页的链接和标题。get='next' 是获取下一页。{dede:pagelist/}:专门用于生成分页列表的标签。
listsize='4':显示当前页码前后的页码数量,例如当前是第3页,可能会显示 1, 2, [3], 4, 5。listitem='...':控制分页导航显示哪些元素。
index:首页pre:上一页next:下一页pageno:页码end:尾页option:下拉跳转框info:分页信息(如“共X页”)listitem='index,pre,next,end,pageno' 会生成类似这样的导航:
首页 上一页 1 2 3 4 5 ... 下一页 尾页
第三步:内容编辑器中插入分页符
<hr style="page-break-interlude: always;" class="pagebreak">)。{dede:pagebreak/} 就不会生效,整个文章只会显示在第一页。
常见问题与解决方案
{dede:pagebreak/},文章还是只有一页?
class="dede_pages" 的 <ul> 列表,你可以在你的 CSS 文件中为这个类编写样式。/* 隐藏默认的列表样式 */
.dede_pages {
list-style: none;
padding: 0;
margin: 20px 0;
display: flex;
justify-content: center;
gap: 5px;
}
.dede_pages a {
display: inline-block;
padding: 5px 10px;
border: 1px solid #ddd;
text-decoration: none;
color: #333;
}
.dede_pages a:hover,
.dede_pages .thisclass a {
background-color: #007bff;
color: #fff;
border-color: #007bff;
}
mb_substr 等函数截取内容,并确保截取长度在第一页的范围内,或者,更规范的做法是,在发布文章时,手动将第一页的内容复制到“字段中。
步骤
操作
核心代码/标签
后台配置
分页功能
系统 -> 系统基本参数 -> 核心设置 -> 是否启用内容分页 = 是
模板修改
页模板中使用分页标签
{dede:pagebreak/} (包裹 {dede:field.body/})
内容编辑
在文章中插入分页符
使用编辑器工具栏的 “分页” 按钮
