dede5.7分页效果如何优化实现?

99ANYc3cd6
预计阅读时长 22 分钟
位置: 首页 DEDE建站 正文
  1. 动态分页:在列表页(如 list_article.php)直接通过 PHP 生成,适用于所有情况,但 URL 通常包含 ?pageno=2 这样的参数。
  2. 静态/伪静态分页:通过一个固定的列表模板(如 list_栏目ID.htm)配合 JavaScript 实现,URL 更美观,但只适用于栏目设置了“使用列表”并且生成了静态HTML的情况。

下面我们分别对这两种分页进行详细说明,并提供自定义样式的方法。

dede5.7分页效果
(图片来源网络,侵删)

动态分页 ({dede:pagelist})

这是最常用、最灵活的分页方式,尤其是在后台设置了“动态浏览”后。

标签说明

在列表模板文件(如 /templets/default/list_article.htm)中,使用 {dede:pagelist} 标签来调用分页。

基本语法:

{dede:pagelist listsize='3' listitem='index pre pageno next end'/}

常用参数详解

  • listsize='3':显示的页码按钮数量。listsize='3' 会在当前页码左右各显示3个页码按钮。
  • listitem='...':定义要显示的分页项目,多个项目用空格隔开。
    • index:首页
    • pre:上一页
    • pageno:页码
    • next:下一页
    • end:尾页
    • option:下拉跳转框
    • info:分页信息(如“共12条记录,当前第1/3页”)
  • listitem='index pre pageno next end info':这是一个比较完整的组合,包含了所有常用项目。
  • listitem='pre pageno next':这是一个简洁的组合,只显示上一页、页码和下一页。

默认HTML结构

{dede:pagelist} 标签默认会生成一个包含 ulli 的列表结构,CSS 类名为 pagelist

dede5.7分页效果
(图片来源网络,侵删)
<ul class="pagelist">
    <li><a href="list_1_1.html">首页</a></li>
    <li><a href="list_1_1.html">上一页</a></li>
    <li><a href="list_1_1.html">1</a></li>
    <li class="thisclass"><a href="list_1_2.html">2</a></li>  <!-- 当前页的li会加上 thisclass 类 -->
    <li><a href="list_1_3.html">3</a></li>
    <li><a href="list_1_3.html">下一页</a></li>
    <li><a href="list_1_12.html">尾页</a></li>
</ul>

自定义分页样式(CSS)

你可以通过编写 CSS 来美化这个默认的分页结构。

示例:一个常见的、美观的分页样式

在你的CSS文件(如 /templets/default/style/dedecms.css)中添加以下样式:

/* 分页容器样式 */
.pagelist {
    display: flex;
    justify-content: center;
    list-style: none;
    padding: 0;
    margin: 20px 0;
    font-size: 14px;
}
.pagelist li {
    margin: 0 5px;
}
.pagelist li a {
    display: block;
    padding: 6px 12px;
    border: 1px solid #ddd;
    border-radius: 3px;
    color: #333;
    text-decoration: none;
    transition: all 0.3s ease;
}
/* 鼠标悬停效果 */
.pagelist li a:hover {
    background-color: #f8f8f8;
    border-color: #999;
}
/* 当前页样式 */
.pagelist li.thisclass a {
    background-color: #007bff;
    color: #fff;
    border-color: #007bff;
    cursor: default;
}
/* 上一页/下一页禁用状态样式 (DedeCMS 默认不生成禁用状态,但可以后期处理) */
.pagelist li.disabled a {
    color: #ccc;
    cursor: not-allowed;
    background-color: #f5f5f5;
    border-color: #ddd;
}

HTML结构说明:

dede5.7分页效果
(图片来源网络,侵删)
  • 分页被包裹在 <ul class="pagelist"> 中。
  • 每一页都是一个 <li>
  • 当前页的 <li> 会有一个特殊的类名 thisclass,我们可以用它来高亮显示当前页。
  • 链接都放在 <a> 标签中。

静态/伪静态分页 ({dede:pagebreak})

这种方式依赖于一个预先生成的静态列表页,通过 JavaScript 在页面内跳转,实现无刷新分页。

标签说明

在列表模板文件中,使用 {dede:pagebreak}

基本语法:

{dede:pagebreak listsize='3' listitem='index pre pageno next end'/}

它的参数和 {dede:pagelist} 完全一样,但生成的HTML结构和JavaScript行为不同。

默认HTML结构与JavaScript

{dede:pagebreak} 默认会生成一个包含所有页码链接的 <div>,并附带上JavaScript代码来控制显示。

默认HTML结构示例:

<!-- 这是 {dede:pagebreak} 生成的隐藏区域,包含所有页码 -->
<div style='display:none'>
    <a href='list_1_1.html'>1</a>
    <a href='list_1_2.html'>2</a>
    <a href='list_1_3.html'>3</a>
    ...
</div>
<!-- 这是用户看到的分页导航容器 -->
<div class="pagebreak">
    <span class="pageinfo">共 <strong>3</strong> 页</span>
    <a href="javascript:;" onclick="goPage(1)">首页</a>
    <a href="javascript:;" onclick="goPage(1)">上一页</a>
    <a href="javascript:;" onclick="goPage(1)">1</a>
    <span class="thisclass"><a href="javascript:;" onclick="goPage(2)">2</a></span> <!-- 当前页 -->
    <a href="javascript:;" onclick="goPage(3)">3</a>
    <a href="javascript:;" onclick="goPage(3)">下一页</a>
    <a href="javascript:;" onclick="goPage(3)">尾页</a>
</div>

核心的 JavaScript 函数 goPage(pageNo) 会被插入到页面底部,它会隐藏整个列表内容,然后通过 Ajax 或直接跳转的方式加载 list_栏目ID_pageNo.html 的内容并替换到页面上。

自定义静态分页样式

自定义样式同样通过 CSS 实现,你可以覆盖默认的 .pagebreak 样式。

示例:为静态分页添加样式

/* 静态分页容器样式 */
.pagebreak {
    display: flex;
    justify-content: center;
    align-items: center;
    margin: 20px 0;
    font-size: 14px;
}
.pagebreak a {
    display: inline-block;
    padding: 6px 12px;
    margin: 0 3px;
    border: 1px solid #ddd;
    border-radius: 3px;
    color: #333;
    text-decoration: none;
    transition: all 0.3s ease;
}
.pagebreak a:hover {
    background-color: #f8f8f8;
    border-color: #999;
}
/* 当前页样式 */
.pagebreak .thisclass a {
    background-color: #007bff;
    color: #fff;
    border-color: #007bff;
    cursor: default;
}
/* 分页信息样式 */
.pagebreak .pageinfo {
    margin: 0 10px;
    color: #666;
}

总结与最佳实践

特性 动态分页 ({dede:pagelist}) 静态/伪静态分页 ({dede:pagebreak})
URL形式 list.php?tid=1&pageno=2list_1_2.html (需伪静态规则) list_1_2.html (非常标准)
实现原理 服务器每次请求都重新生成整个页面 加载一个静态HTML,通过JS切换内容
SEO友好度 稍差(动态参数),伪静态后可改善 极佳,URL标准,利于搜索引擎抓取
用户体验 每次翻页有页面刷新(除非自己加AJAX) 无刷新,体验流畅
适用场景 所有场景,特别是后台开启“动态浏览”时 栏目开启了“使用列表”并生成静态HTML时
自定义 通过修改 .pagelist 的CSS类 通过修改 .pagebreak 的CSS类

如何选择?

  1. 追求SEO和用户体验:如果你的网站内容是静态的,且栏目设置了“使用列表”,强烈推荐使用静态分页 ({dede:pagebreak}),URL更美观,且无刷新体验好。
  2. 灵活性和通用性:如果你的网站大部分内容是动态浏览的,或者不确定,使用动态分页 ({dede:pagelist}) 是最稳妥的选择。

通用自定义步骤:

  1. 修改模板:在列表模板文件 (list_xxx.htm) 中,根据你的需求选择 {dede:pagelist}{dede:pagebreak},并设置好 listitem 参数。
  2. 编写CSS:在你的CSS文件中,针对生成的HTML结构(如 .pagelist.pagebreak)编写自定义样式。
  3. 刷新和测试:在后台更新相应栏目或文档的HTML,然后刷新页面查看效果。

通过以上方法,你就可以轻松地自定义 DedeCMS 5.7 的分页效果,使其与你的网站设计风格完美融合。

-- 展开阅读全文 --
头像
dede自定义表单如何设置字段非空验证?
« 上一篇 今天
织梦列表页缩略图如何正确调用?
下一篇 » 今天

相关文章

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