在 DedeCMS 中,“频道封面”通常指的是一个栏目的列表页,比如文章列表、产品列表等,当内容很多时,实现分页是必不可少的。

(图片来源网络,侵删)
分页的核心逻辑分为两个部分:
- 前端页面调用:在模板文件中使用标签调用分页数据。
- 后端程序处理:系统根据当前页码,从数据库中查询对应范围的数据并生成分页导航链接。
下面我将分步详细说明,并提供不同场景下的代码示例。
第一步:理解核心标签
实现频道封面分页主要依赖两个核心标签:
{dede:list}:用于获取并循环输出当前栏目的文章列表。{dede:pagelist}:用于生成分页导航条(如 上一页 1 2 3 下一页)。
这两个标签通常配合使用。

(图片来源网络,侵删)
第二步:创建和修改栏目列表页模板
- 进入后台 -> 模板 -> 默认模板管理。
- 找到你需要分页的栏目(新闻中心”)。
- 在该栏目设置中,为其指定一个“列表模板”,如果还没有,可以复制
list_default.htm并重命名(list_news.htm),然后进行修改。
打开你的列表模板文件(list_news.htm),其基本结构如下:
{dede:include filename="head.htm"/}主体 -->
<div class="main">
<div class="content">
<!-- 标题 -->
<h2>{dede:field.typename/}</h2>
<!-- 文章列表循环开始 -->
{dede:list pagesize='10'}
<div class="list-item">
<h3><a href="[field:arcurl/]">[field:title/]</a></h3>
<p class="info">发布时间:[field:pubdate function="MyDate('Y-m-d',@me)"/] 作者:[field:author/]</p>
<p class="summary">[field:description/]...</p>
</div>
{/dede:list}
<!-- 分页导航条 -->
<div class="page">
{dede:pagelist listsize='5' listitem='index pre pageno next end '/}
</div>
</div>
</div>
{dede:include filename="footer.htm"/}
第三步:详解核心标签的用法
{dede:list}
这个标签的作用是循环输出指定数量的文章。
-
pagesize 属性:这是最重要的属性,它定义了每页显示的文章数量。
{dede:list pagesize='10'} 表示每页显示 10 篇文章。
- 你可以根据需要修改这个数值。
-
内部可用字段:在 {dede:list}...{/dede:list} 循环内部,可以使用各种文章字段,
(图片来源网络,侵删)
[field:title/]
[field:arcurl/]:文章链接
[field:pubdate/]:发布日期(时间戳格式)
[field:description/]:文章摘要
[field:litpic/]:文章缩略图
- 更多字段可以查阅 DedeCMS 的标签手册。
{dede:pagelist}
这个标签用于生成分页导航,首页 上一页 1 2 3 4 5 下一页 末页。
-
listsize 属性:控制当前页码左右两侧显示的页码数量。
listsize='2',如果当前是第 3 页,会显示 1 2 [3] 4 5。
listsize='5',会显示 1 2 3 4 5 6 7 8 9 10 11(如果总页数足够多)。
-
listitem 属性:用于控制分页导航条显示哪些元素,多个元素用空格隔开。
index:首页
pre:上一页
pageno:页码
next:下一页
end:末页
option:下拉跳转框
info:页脚信息(如“共X页”)
- 示例:
{dede:pagelist listitem='index pre pageno next end info'/} 会生成一个包含所有常用元素的完整分页条。
第四步:设置栏目分页参数
除了模板中的 pagesize,你还可以在后台栏目设置中指定每页显示数量,这个设置会覆盖模板中的 pagesize。
- 进入后台 -> 栏目管理 -> 选择你的栏目(如“新闻中心”) -> 修改。
- 在栏目修改页面,找到“列表选项”或“高级选项”部分。
- 找到 “列表每页显示条数” 这个选项,填入你想要的数值(10)。
- 保存。
这样,该栏目下的所有列表页都会按照这个数值进行分页。
第五步:常见问题与解决方案
分页链接是 index.php?m=content&c=index&a=show&catid=XX 而不是 /list/XX.html
这通常是由于 “文档HTML默认页规则” 设置不正确导致的。
- 解决方法:
- 进入后台 -> 系统 -> 系统基本参数 -> 核心设置。
- 找到 “文档HTML默认页规则” 这一项。
- 将其修改为
/{typedir}/list_{page}.html。
- 保存设置。
- 重要:去 “生成” -> “更新栏目HTML” 和 “更新栏目HTML” 里,重新生成一下你的栏目和列表页,使新规则生效。
如何自定义分页样式?
{dede:pagelist} 生成的分页默认样式比较简单,如果你想美化它,可以通过修改系统文件来实现。
- 文件位置:
/include/arc.listview.class.php
- 修改方法:
- 用代码编辑器打开这个文件。
- 搜索
GetPageListST 函数(这是旧版本,新版本可能在 GetPageList 或类似函数中)。
- 你会看到一些
.$tnamerow['listitem']. 这样的代码,它们拼接生成了分页的HTML。
- 你可以修改这里的HTML结构,并为其添加CSS类名,以便在外部CSS文件中进行样式控制。
更推荐的方法(高级用户):
如果你对PHP有一定了解,可以创建一个自定义的函数来替换默认的分页函数,这样模板调用会更灵活,但对于大多数用户,直接修改 arc.listview.class.php 或使用CSS覆盖是最常见的方法。
分页显示“共0页”或没有数据
请检查以下几点:
- 栏目是否有内容:确保该栏目下已经发布了文章。
- 模板标签是否正确:检查
{dede:list} 和 {dede:pagelist} 标签是否拼写正确,并且没有被其他标签错误地包含或注释掉。
- 生成是否完成:确保列表页已经生成,可以在后台的“生成”栏目中手动生成一次。
实现 DedeCMS 频道封面分页的步骤非常清晰:
- 修改列表模板 (
list_xxx.htm)。
- 使用
{dede:list pagesize='N'} 循环输出文章列表。
- 使用
{dede:pagelist listitem='...'} 在列表下方生成分页导航。
- (可选)在后台栏目设置中指定每页显示数量。
- (重要)检查并设置“文档HTML默认页规则”,确保分页链接是伪静态的友好URL。
通过以上步骤,你就可以轻松地为 DedeCMS 的任何频道封面实现分页功能了。
这个标签的作用是循环输出指定数量的文章。
-
pagesize属性:这是最重要的属性,它定义了每页显示的文章数量。{dede:list pagesize='10'}表示每页显示 10 篇文章。- 你可以根据需要修改这个数值。
-
内部可用字段:在
{dede:list}...{/dede:list}循环内部,可以使用各种文章字段,
(图片来源网络,侵删)[field:title/][field:arcurl/]:文章链接[field:pubdate/]:发布日期(时间戳格式)[field:description/]:文章摘要[field:litpic/]:文章缩略图- 更多字段可以查阅 DedeCMS 的标签手册。
{dede:pagelist}
这个标签用于生成分页导航,首页 上一页 1 2 3 4 5 下一页 末页。
-
listsize 属性:控制当前页码左右两侧显示的页码数量。
listsize='2',如果当前是第 3 页,会显示 1 2 [3] 4 5。
listsize='5',会显示 1 2 3 4 5 6 7 8 9 10 11(如果总页数足够多)。
-
listitem 属性:用于控制分页导航条显示哪些元素,多个元素用空格隔开。
index:首页
pre:上一页
pageno:页码
next:下一页
end:末页
option:下拉跳转框
info:页脚信息(如“共X页”)
- 示例:
{dede:pagelist listitem='index pre pageno next end info'/} 会生成一个包含所有常用元素的完整分页条。
第四步:设置栏目分页参数
除了模板中的 pagesize,你还可以在后台栏目设置中指定每页显示数量,这个设置会覆盖模板中的 pagesize。
- 进入后台 -> 栏目管理 -> 选择你的栏目(如“新闻中心”) -> 修改。
- 在栏目修改页面,找到“列表选项”或“高级选项”部分。
- 找到 “列表每页显示条数” 这个选项,填入你想要的数值(10)。
- 保存。
这样,该栏目下的所有列表页都会按照这个数值进行分页。
第五步:常见问题与解决方案
分页链接是 index.php?m=content&c=index&a=show&catid=XX 而不是 /list/XX.html
这通常是由于 “文档HTML默认页规则” 设置不正确导致的。
- 解决方法:
- 进入后台 -> 系统 -> 系统基本参数 -> 核心设置。
- 找到 “文档HTML默认页规则” 这一项。
- 将其修改为
/{typedir}/list_{page}.html。
- 保存设置。
- 重要:去 “生成” -> “更新栏目HTML” 和 “更新栏目HTML” 里,重新生成一下你的栏目和列表页,使新规则生效。
如何自定义分页样式?
{dede:pagelist} 生成的分页默认样式比较简单,如果你想美化它,可以通过修改系统文件来实现。
- 文件位置:
/include/arc.listview.class.php
- 修改方法:
- 用代码编辑器打开这个文件。
- 搜索
GetPageListST 函数(这是旧版本,新版本可能在 GetPageList 或类似函数中)。
- 你会看到一些
.$tnamerow['listitem']. 这样的代码,它们拼接生成了分页的HTML。
- 你可以修改这里的HTML结构,并为其添加CSS类名,以便在外部CSS文件中进行样式控制。
更推荐的方法(高级用户):
如果你对PHP有一定了解,可以创建一个自定义的函数来替换默认的分页函数,这样模板调用会更灵活,但对于大多数用户,直接修改 arc.listview.class.php 或使用CSS覆盖是最常见的方法。
分页显示“共0页”或没有数据
请检查以下几点:
- 栏目是否有内容:确保该栏目下已经发布了文章。
- 模板标签是否正确:检查
{dede:list} 和 {dede:pagelist} 标签是否拼写正确,并且没有被其他标签错误地包含或注释掉。
- 生成是否完成:确保列表页已经生成,可以在后台的“生成”栏目中手动生成一次。
实现 DedeCMS 频道封面分页的步骤非常清晰:
- 修改列表模板 (
list_xxx.htm)。
- 使用
{dede:list pagesize='N'} 循环输出文章列表。
- 使用
{dede:pagelist listitem='...'} 在列表下方生成分页导航。
- (可选)在后台栏目设置中指定每页显示数量。
- (重要)检查并设置“文档HTML默认页规则”,确保分页链接是伪静态的友好URL。
通过以上步骤,你就可以轻松地为 DedeCMS 的任何频道封面实现分页功能了。
这个标签用于生成分页导航,首页 上一页 1 2 3 4 5 下一页 末页。
-
listsize属性:控制当前页码左右两侧显示的页码数量。listsize='2',如果当前是第 3 页,会显示1 2 [3] 4 5。listsize='5',会显示1 2 3 4 5 6 7 8 9 10 11(如果总页数足够多)。
-
listitem属性:用于控制分页导航条显示哪些元素,多个元素用空格隔开。index:首页pre:上一页pageno:页码next:下一页end:末页option:下拉跳转框info:页脚信息(如“共X页”)- 示例:
{dede:pagelist listitem='index pre pageno next end info'/}会生成一个包含所有常用元素的完整分页条。
第四步:设置栏目分页参数
除了模板中的 pagesize,你还可以在后台栏目设置中指定每页显示数量,这个设置会覆盖模板中的 pagesize。
- 进入后台 -> 栏目管理 -> 选择你的栏目(如“新闻中心”) -> 修改。
- 在栏目修改页面,找到“列表选项”或“高级选项”部分。
- 找到 “列表每页显示条数” 这个选项,填入你想要的数值(10)。
- 保存。
这样,该栏目下的所有列表页都会按照这个数值进行分页。
第五步:常见问题与解决方案
分页链接是 index.php?m=content&c=index&a=show&catid=XX 而不是 /list/XX.html
这通常是由于 “文档HTML默认页规则” 设置不正确导致的。
- 解决方法:
- 进入后台 -> 系统 -> 系统基本参数 -> 核心设置。
- 找到 “文档HTML默认页规则” 这一项。
- 将其修改为
/{typedir}/list_{page}.html。 - 保存设置。
- 重要:去 “生成” -> “更新栏目HTML” 和 “更新栏目HTML” 里,重新生成一下你的栏目和列表页,使新规则生效。
如何自定义分页样式?
{dede:pagelist} 生成的分页默认样式比较简单,如果你想美化它,可以通过修改系统文件来实现。
- 文件位置:
/include/arc.listview.class.php - 修改方法:
- 用代码编辑器打开这个文件。
- 搜索
GetPageListST函数(这是旧版本,新版本可能在GetPageList或类似函数中)。 - 你会看到一些
.$tnamerow['listitem'].这样的代码,它们拼接生成了分页的HTML。 - 你可以修改这里的HTML结构,并为其添加CSS类名,以便在外部CSS文件中进行样式控制。
更推荐的方法(高级用户):
如果你对PHP有一定了解,可以创建一个自定义的函数来替换默认的分页函数,这样模板调用会更灵活,但对于大多数用户,直接修改 arc.listview.class.php 或使用CSS覆盖是最常见的方法。
分页显示“共0页”或没有数据
请检查以下几点:
- 栏目是否有内容:确保该栏目下已经发布了文章。
- 模板标签是否正确:检查
{dede:list}和{dede:pagelist}标签是否拼写正确,并且没有被其他标签错误地包含或注释掉。 - 生成是否完成:确保列表页已经生成,可以在后台的“生成”栏目中手动生成一次。
实现 DedeCMS 频道封面分页的步骤非常清晰:
- 修改列表模板 (
list_xxx.htm)。 - 使用
{dede:list pagesize='N'}循环输出文章列表。 - 使用
{dede:pagelist listitem='...'}在列表下方生成分页导航。 - (可选)在后台栏目设置中指定每页显示数量。
- (重要)检查并设置“文档HTML默认页规则”,确保分页链接是伪静态的友好URL。
通过以上步骤,你就可以轻松地为 DedeCMS 的任何频道封面实现分页功能了。
