织梦cms的pagelist标签如何自定义排序?

99ANYc3cd6
预计阅读时长 18 分钟
位置: 首页 织梦建站 正文

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

织梦cms的pagelist标签排序
(图片来源网络,侵删)

核心属性:listitemlistsize

控制分页显示哪些部分以及显示多少页,是实现“排序”和自定义样式的关键。

listitem 属性 (决定显示哪些分页元素)

这个属性用 分隔的字符串列表,来指定分页导航中要显示的项目。

可用值包括:

  • index: 首页
  • pre: 上一页
  • pageno: 当前页码
  • next: 下一页
  • endlink: 末页
  • pagelink: 所有页码的链接(默认会显示)
  • option: 下拉跳转框(如果启用的话)

示例:

织梦cms的pagelist标签排序
(图片来源网络,侵删)
  • 默认显示(常用):

    {dede:pagelist listitem='index pre pageno next endlink'/}

    效果:首页 上一页 1 2 3 4 5 下一页 末页

  • 只显示上下页和页码:

    {dede:pagelist listitem='pre pageno next'/}

    效果:上一页 1 2 3 4 5 下一页

    织梦cms的pagelist标签排序
    (图片来源网络,侵删)
  • 显示所有元素(包含首页末页和下拉跳转):

    {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'/}

完整属性列表与样式控制

除了listitemlistsize,还有其他常用属性可以帮助你完全控制分页的样式和功能。

属性名 作用 示例值
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:如何修改“首页”、“末页”等显示的文字?

原因: 这些文字是硬编码在织梦程序里的,无法直接在模板中修改。 解决方法:

  1. 不推荐:修改织梦核心文件 /include/arc.archives.class.php 等文件,升级后会被覆盖。
  2. 推荐:使用template属性进行完全自定义,或者用CSS的afterbefore伪元素来覆盖文本(比较麻烦)。
  3. 最佳实践:接受默认文本,通过CSS来隐藏它们,然后用自定义的HTML元素替代。

问题3:分页样式和网站风格不统一怎么办?

解决方法:

  1. 使用CSS:这是最推荐的方法,如场景3所示,通过为.pagination下的不同元素添加class,然后用CSS精确控制其样式、颜色、间距等。
  2. 使用template属性:如果默认的HTML结构(如<a>标签)也无法满足需求,就用template写出你想要的任何HTML结构。

要控制{dede:pagelist}标签的“排序”和样式,你需要记住以下几个核心要点:

  1. listitem:决定显示什么(首页、上下页、页码等)。
  2. listsize:决定显示多少个页码
  3. type:决定分页的布局逻辑(动态列表 vs 固定列表)。
  4. CSS:决定最终的外观,是美化分页的最主要手段。
  5. template:高级用法,用于完全自定义HTML结构

通过灵活组合这些属性和CSS,你就可以实现任何你想要的分页导航样式。

-- 展开阅读全文 --
头像
dede arclist如何排除当前文章?
« 上一篇 12-06
织梦搜索页如何支持dede type?
下一篇 » 12-06

相关文章

取消
微信二维码
支付宝二维码

目录[+]