{dede:pagelist}标签用于生成文章列表的分页导航,其排序(即分页的显示方式,如“首页 上一页 1 2 3 4 5 下一页 末页”)是由其自身的属性控制的,而不是由外部SQL排序,它的“排序”更准确地说是分页样式的配置。

核心属性:listitem 和 listsize
控制分页显示哪些部分以及显示多少页,是实现“排序”和自定义样式的关键。
listitem 属性 (决定显示哪些分页元素)
这个属性用 分隔的字符串列表,来指定分页导航中要显示的项目。
可用值包括:
index: 首页pre: 上一页pageno: 当前页码next: 下一页endlink: 末页pagelink: 所有页码的链接(默认会显示)option: 下拉跳转框(如果启用的话)
示例:

-
默认显示(常用):
{dede:pagelist listitem='index pre pageno next endlink'/}效果:
首页 上一页 1 2 3 4 5 下一页 末页 -
只显示上下页和页码:
{dede:pagelist listitem='pre pageno next'/}效果:
上一页 1 2 3 4 5 下一页
(图片来源网络,侵删) -
显示所有元素(包含首页末页和下拉跳转):
{dede:pagelist listitem='index pre pageno next endlink option'/}效果:
首页 上一页 1 2 3 4 5 下一页 末页 [下拉跳转框]
listsize 属性 (决定显示多少个页码)
这个属性控制页码列表部分显示的页码数量。
示例:
-
显示5个页码(默认):
{dede:pagelist listsize='5'/} -
显示10个页码:
{dede:pagelist listsize='10'/}
完整属性列表与样式控制
除了listitem和listsize,还有其他常用属性可以帮助你完全控制分页的样式和功能。
| 属性名 | 作用 | 示例值 |
|---|---|---|
listitem |
指定显示哪些分页项 | 'index\|pre\|next\|endlink' |
listsize |
指定显示的页码数量 | 5 |
itemwidth |
每个分页项(如“首页”、“1”)的宽度(单位px) | 40 |
maxoption |
下拉跳转框中显示的最大页码数 | 100 |
type |
设置分页的样式类型(非常重要) | list(列表模式,默认), fixed(固定模式) |
template |
自定义分页的HTML模板(高级用法) | 自定义的HTML字符串 |
type 属性:两种主要的排序/显示模式
这是实现不同分页样式的核心属性。
type='list' (列表模式,默认)
这是最常用的模式,页码会根据当前页动态生成一个列表,始终包含当前页,并向两边扩展,直到达到listsize设定的数量。
示例:
假设总共有20页,当前在第5页,listsize='5'。
{dede:pagelist listitem='index pre pageno next endlink' listsize='5' type='list'/}
可能的效果:
首页 上一页 ... 3 4 [5] 6 7 ... 下一页 末页
(织梦会智能地处理省略号,确保用户能访问到关键页面)
type='fixed' (固定模式)
在这种模式下,分页会显示一个固定数量的页码,不会根据当前页的位置动态调整,它通常从第一页开始显示。
示例:
假设总共有20页,当前在第5页,listsize='5'。
{dede:pagelist listitem='index pre pageno next endlink' listsize='5' type='fixed'/}
效果:
首页 上一页 1 2 3 4 5 下一页 末页
(无论你当前在第几页,都只显示前5个页码)
注意: type='fixed' 在内容页分页中很少使用,因为它不利于用户浏览后面的页面,它更常用于一些特殊场景,比如标签列表页等。
实际应用场景与代码示例
场景1:标准分页样式(最常用)
这是大多数网站采用的方式,简洁明了。
<div class="dede_pages">
<ul class="pagelist">
{dede:pagelist listitem='index pre pageno next endlink' listsize='5'/}
</ul>
</div>
场景2:只显示上下页和当前页码
较少,或者希望界面极简的场景。
<div class="dede_pages">
<ul class="pagelist">
{dede:pagelist listitem='pre pageno next'/}
</ul>
</div>
场景3:自定义样式(结合CSS)
通过给pagelist标签的每个部分添加不同的class,然后用CSS来美化。
织梦默认会给生成的链接加上特定的class,
- 首页/末页/上一页/下一页:
class="page-prev"/class="page-next"等 - 当前页:
class="page-now" - 普通页码:
class="page-num"
模板代码:
<div class="pagination">
{dede:pagelist listitem='index pre pageno next endlink' listsize='5'/}
</div>
CSS代码 (放在你的CSS文件中):
.pagination {
text-align: center;
font-size: 14px;
margin: 20px 0;
}
.pagination a, .pagination span {
display: inline-block;
padding: 5px 10px;
margin: 0 3px;
border: 1px solid #ddd;
border-radius: 3px;
text-decoration: none;
color: #333;
}
.pagination a:hover {
background-color: #f0f0f0;
}
.pagination .page-now { /* 当前页样式 */
background-color: #007bff;
color: #fff;
border-color: #007bff;
}
.pagination .page-prev, .pagination .page-next { /* 上下页样式 */
padding: 5px 15px;
}
场景4:高级用法 - 使用 template 属性完全自定义
如果你对默认的HTML结构不满意,可以使用template属性来编写自己的模板。
模板代码:
<div class="my-custom-pagination">
{dede:pagelist
listitem='index pre pageno next endlink'
listsize='5'
template='<span>[index]</span><span>[pre]</span><span class="page-num">[pageno]</span><span>[next]</span><span>[endlink]</span>'
/}
</div>
说明:
- 在
template字符串中,[index]、[pre]等会被替换成对应的链接和文本。 - 你可以自由地添加HTML标签和CSS类,实现完全的控制。
常见问题与解决
问题1:为什么我的分页显示为“首页 上一页 下一页 末页”,没有页码?
原因: 这是因为listitem属性中没有包含pageno。
解决方法: 在listitem中加上pageno。
{dede:pagelist listitem='index pre pageno next endlink'/}
问题2:如何修改“首页”、“末页”等显示的文字?
原因: 这些文字是硬编码在织梦程序里的,无法直接在模板中修改。 解决方法:
- 不推荐:修改织梦核心文件
/include/arc.archives.class.php等文件,升级后会被覆盖。 - 推荐:使用
template属性进行完全自定义,或者用CSS的after或before伪元素来覆盖文本(比较麻烦)。 - 最佳实践:接受默认文本,通过CSS来隐藏它们,然后用自定义的HTML元素替代。
问题3:分页样式和网站风格不统一怎么办?
解决方法:
- 使用CSS:这是最推荐的方法,如场景3所示,通过为
.pagination下的不同元素添加class,然后用CSS精确控制其样式、颜色、间距等。 - 使用
template属性:如果默认的HTML结构(如<a>标签)也无法满足需求,就用template写出你想要的任何HTML结构。
要控制{dede:pagelist}标签的“排序”和样式,你需要记住以下几个核心要点:
listitem:决定显示什么(首页、上下页、页码等)。listsize:决定显示多少个页码。type:决定分页的布局逻辑(动态列表 vs 固定列表)。- CSS:决定最终的外观,是美化分页的最主要手段。
template:高级用法,用于完全自定义HTML结构。
通过灵活组合这些属性和CSS,你就可以实现任何你想要的分页导航样式。
