dede分页如何修改?

99ANYc3cd6
预计阅读时长 20 分钟
位置: 首页 DEDE建站 正文

下面我将从 最简单快捷的修改方法深度自定义和代码层面修改,为你提供一份详细的指南。

dede怎么修改分页
(图片来源网络,侵删)

核心概念:分页由哪几部分组成?

在 DedeCMS 中,分页主要由三部分构成:

  1. 核心函数GetPageList() 函数,这个函数负责生成分页的 HTML 代码,它位于 /include/arc.archives.class.php 文件中。这是修改分页逻辑和样式的核心文件。
  2. 模板标签:在列表页模板(通常是 list_article.htm)中,我们使用 {dede:pagelist listitem='index,pre,next,end,option' listsize='5' /} 这个标签来调用并显示分页。
  3. CSS 样式:分页最终呈现的样式,由你主题的 CSS 文件控制。

通过修改模板标签实现快速样式调整(推荐新手)

这是最安全、最简单的方法,它不涉及核心代码,仅通过修改模板标签和 CSS 来改变分页的外观。

修改分页显示项目

在列表页模板文件 list_article.htm 中,找到 {dede:pagelist}

  • listitem:控制分页显示哪些部分。
    • index:首页
    • pre:上一页
    • pagelink:页码
    • next:下一页
    • end:尾页
    • option:下拉跳转框
    • info:页脚信息(如“共X页”)

示例: 默认可能是 {dede:pagelist listitem='index,pre,next,end,option' listsize='5' /} 如果你想显示更丰富的信息,可以修改为: {dede:pagelist listitem='index,pre,option,next,end,info' listsize='5' /}

修改分页显示数量

  • listsize:控制页码显示的数量。listsize='5' 表示当前页码左右各显示 5 个页码。

示例: {dede:pagelist listitem='index,pre,next,end,option' listsize='3' /} 这样页码数量就会变少。

dede怎么修改分页
(图片来源网络,侵删)

自定义分页 HTML 结构和 CSS

这是实现自定义样式的关键,默认情况下,GetPageList() 函数生成的 HTML 结构比较固定,如果你想彻底改变其样式,最直接的方法是覆盖这个函数

步骤:

  1. 找到核心文件/include/arc.archives.class.php

  2. 找到函数:在文件中搜索 function GetPageList,找到这个函数的定义。

  3. 复制函数到你的文件:为了不修改核心文件(方便后续升级),我们可以在当前模板的文件中覆盖这个函数。

    • 在你的列表页模板 list_article.htm 的开头,加入以下代码(注意,这必须在 dede 标签之外):
    {dede:global name='phpmyadmin'/}
    <?php
    // 覆盖 GetPageList 函数,来自 include/arc.archives.class.php
    // 你可以直接复制原函数,然后进行修改
    function GetPageList($listitem="index,pre,next,end,option",$listsize="5")
    {
        // ... 这里是原函数的所有代码 ...
        // 你需要在这里修改生成 HTML 的逻辑
    }
    ?>
  4. 修改函数内部逻辑:现在你可以直接修改 GetPageList 函数内部的代码,特别是生成 HTML 字符串的部分,来构建你想要的分页结构,你可以把默认的 <span><a> 标签换成 <li> 标签,以配合 Bootstrap 等框架。

示例:修改为 Bootstrap 风格的分页

假设你已经复制了 GetPageList 函数到 list_article.htm,然后找到生成 $plist 字符串的地方,将其修改为:

// 在 GetPageList 函数内部,找到生成 $plist 的代码段,替换成类似下面这样的逻辑
$list_len = $listsize * 2 + 1;
$totalpage = ceil($this->TotalResult / $this->PageSize);
$plist = '';
if ($totalpage <= 1) {
    return $plist;
}
$plist .= '<ul class="pagination">';
// 首页
if($listitem=='index' && $this->PageNo > 1){
    $plist .= '<li><a href="'.str_replace('{page}', 1, $this->GetCurUrl()).'">首页</a></li>';
}
// 上一页
if($listitem=='pre' && $this->PageNo > 1){
    $plist .= '<li><a href="'.str_replace('{page}', ($this->PageNo-1), $this->GetCurUrl()).'">上一页</a></li>';
}
// 页码
$page_no = $this->PageNo;
if($totalpage > $list_len){
    $init_pageno = min($page_no - floor($listsize / 2), $totalpage - $listsize + 1);
    $end_page = $init_pageno + $listsize - 1;
    if($init_pageno < 1){
        $init_pageno = 1;
    }
}else{
    $init_pageno = 1;
    $end_page = $totalpage;
}
for($i=$init_pageno;$i<=$end_page;$i++){
    if($page_no == $i){
        $plist .= '<li class="active"><span>'.$i.'</span></li>';
    }else{
        $plist .= '<li><a href="'.str_replace('{page}', $i, $this->GetCurUrl()).'">'.$i.'</a></li>';
    }
}
// 下一页
if($listitem=='next' && $this->PageNo < $totalpage){
    $plist .= '<li><a href="'.str_replace('{page}', ($this->PageNo+1), $this->GetCurUrl()).'">下一页</a></li>';
}
// 尾页
if($listitem=='end' && $this->PageNo < $totalpage){
    $plist .= '<li><a href="'.str_replace('{page'}, $totalpage, $this->GetCurUrl()).'">尾页</a></li>';
}
// 下拉跳转
if($listitem=='option'){
    $plist .= '<li class="disabled"><span>共 '.$totalpage.' 页</span></li>';
    $plist .= '<li><select onchange="location.href=this.options[this.selectedIndex].value;">';
    for($i=1;$i<=$totalpage;$i++){
        $selected = $i==$page_no ? 'selected' : '';
        $plist .= '<option value="'.str_replace('{page}', $i, $this->GetCurUrl()).'" '.$selected.'>'.$i.'</option>';
    }
    $plist .= '</select></li>';
}
$plist .= '</ul>';
return $plist;

注意:上面的代码只是一个示例,你需要根据原函数的逻辑进行调整,确保变量(如 $this->PageNo, $this->TotalResult 等)的正确使用。


修改核心文件(不推荐,除非必要)

如果你对所有列表页的分页都需要进行统一的、深度的修改,并且不担心后续升级时被覆盖,可以直接修改核心文件 /include/arc.archives.class.php

  1. 备份原文件:在修改之前,务必备份 arc.archives.class.php
  2. 编辑文件:打开文件,找到 function GetPageList 函数。
  3. 修改代码:与方法一中的第4步相同,修改函数内部生成 HTML 的逻辑。
  4. 保存文件

缺点:每次 DedeCMS 升级时,这个文件很可能会被覆盖,导致你的修改丢失。优先推荐使用方法一


使用现成的分页插件

如果你不想自己编写代码,市面上有很多 DedeCMS 的分页插件,它们提供了丰富的样式选择(如 Bootstrap、LayUI 等),通常只需要上传安装并启用即可,非常方便。

你可以在 DedeCMS 的官方论坛、插件市场或第三方资源网站上搜索“织梦分页插件”、“dede pagelist plugin”等关键词来找到合适的插件。


总结与建议

方法 优点 缺点 适用人群
覆盖函数 安全(不修改核心文件)、灵活、可定制性高 需要一定的 PHP 基础,操作稍复杂 有一定开发能力,希望深度自定义的用户
修改核心文件 一次修改,全局生效 升级后易丢失,有风险 对所有页面有统一需求,且不打算频繁升级的用户
使用插件 简单快捷,样式丰富 可能与特定主题不兼容,有安全隐患 新手,或追求快速实现特定样式的用户

给新手的建议

  1. 先从方法一开始,尝试修改 listitemlistsize,看看是否能满足你的基本需求。
  2. 如果需要改变样式,再尝试方法一,在模板文件中覆盖 GetPageList 函数,并参考上面的示例进行修改。
  3. 如果觉得代码太复杂,或者想快速实现效果,再考虑方法三,找一个靠谱的插件。

希望这份详细的指南能帮助你成功修改 DedeCMS 的分页!

-- 展开阅读全文 --
头像
织梦博客自适应免费,真有这好事?
« 上一篇 昨天
织梦模板编码转换器
下一篇 » 昨天
取消
微信二维码
支付宝二维码