dede分页标签如何自定义修改?

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

DedeCMS 的分页功能主要由两个部分组成:

dede分页标签修改
(图片来源网络,侵删)
  1. 底层模板标签:用于在列表页或内容页中调用并显示分页链接。
  2. PHP 函数:用于生成分页的逻辑和数据。

修改分页通常涉及以下几种常见需求:

  • 修改分页样式:改变分页链接的外观,如颜色、边框、间距等。
  • 修改分页文本:修改“首页”、“上一页”、“下一页”、“末页”等显示的文字。
  • 修改分页数量:调整每页显示的条目数。
  • 添加自定义功能:如添加“跳转到指定页”的功能。

下面我将针对这些需求,提供详细的修改方法。


准备工作:找到并备份关键文件

在进行任何修改之前,强烈建议你先备份以下文件,以防修改出错导致网站无法正常工作。

  1. 模板文件:你正在使用的列表模板,通常位于 /templets/你的模板目录/ list_栏目ID.htm
  2. 核心PHP文件
    • /include/arc.listview.class.php:列表页分页逻辑的核心文件。
    • /include/arc.archives.class.php页(文章页)分页逻辑的核心文件。
    • /include/dedehtml.class.php:包含 GetPageList() 函数,一个更通用的分页函数,部分模板或插件可能会用到。

修改分页样式(最常用)

这是最常见的需求,通常通过修改 CSS 样式来实现,最安全、最推荐。

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

步骤 1:在模板文件中找到分页标签

在你的列表模板文件 (list_xxx.htm) 中,找到类似这样的分页标签:

<div class="dede_pages">
    <ul class="pagelist">
        {dede:pagelist listitem="info,index,end,pre,next,pageno" listsize="5" /}
    </ul>
</div>

步骤 2:分析生成的 HTML 结构

DedeCMS 的 pagelist 标签会生成一个无序列表 (<ul>),每个分页链接都是一个列表项 (<li>),默认情况下,DedeCMS 会给不同状态的链接加上不同的 class,

  • class="pageinfo":显示总页数等信息的 <li>
  • class="pagea":普通页码链接。
  • class="pagepre":上一页链接。
  • class="pagenext":下一页链接。
  • class="pagebuttom":首页、末页链接。
  • class="pagecurrent":当前页链接。

步骤 3:编写或修改 CSS 样式

在你的模板的 CSS 文件中(/templets/你的模板目录/style/css.css),添加或修改针对这些 class 的样式。

示例:创建一个现代化的分页样式

/* 分页容器整体样式 */
.dede_pages {
    text-align: center;
    margin: 20px 0;
}
/* 分页列表样式 */
.pagelist {
    display: inline-block;
    list-style: none;
    padding: 0;
    margin: 0;
    border: 1px solid #ddd;
    border-radius: 3px;
    overflow: hidden; /* 用于圆角效果 */
}
/* 分页列表项(链接)样式 */
.pagelist li {
    float: left; /* 让链接水平排列 */
}
.pagelist a {
    display: block;
    padding: 8px 12px;
    text-decoration: none;
    color: #333;
    border-right: 1px solid #ddd;
}
/* 最后一项没有右边框 */
.pagelist li:last-child a {
    border-right: none;
}
/* 鼠标悬停效果 */
.pagelist a:hover {
    background-color: #f5f5f5;
}
/* 当前页样式 */
.pagelist .pagecurrent {
    display: block;
    padding: 8px 12px;
    background-color: #007bff;
    color: #fff;
    font-weight: bold;
}
/* 上一页/下一页/首页/末页 样式 */
.pagelist .pagepre a,
.pagelist .pagenext a,
.pagelist .pagebuttom a {
    padding: 8px 16px; /* 可以让这些按钮宽一些 */
}
/* 禁用状态(例如在第一页时“上一页”和“首页”会变成span) */
.pagelist .pagepre span,
.pagelist .pagenext span,
.pagelist .pagebuttom span {
    display: block;
    padding: 8px 12px;
    color: #ccc;
    cursor: not-allowed;
}

将这段 CSS 添加到你的样式表中,分页的外观就会立刻改变,这种方法的好处是不涉及 PHP 文件修改,非常安全。


修改分页文本和数量

如果你需要修改“首页”、“上一页”等文字,或者每页显示的条目数,就需要修改 PHP 文件了。

修改分页显示文字

编辑文件 /include/arc.listview.class.php

找到 GetPageListSTL() 函数,你会看到类似这样的代码:

// ... 在 GetPageListSTL 函数内部 ...
$listLen = "5"; // 控制显示的页码数量
$otaltem = $this->TotalResult;
$totalpage = ceil($otaltem / $this->PageSize);
$geturl = "GetArcList";
// 获取当前页码
$pageNo = $this->PageNo;
// 获取栏目ID
$TypeID = $this->TypeID;
// 定义分页文本
$prepage = "<li><a href='".$purl."/".$pageNo-1."'>".$this->PrePage."</a></li>";
$nextpage = "<li><a href='".$purl."/".$pageNo+1."'>".$this->NextPage."</a></li>";
$indexpage = "<li><a href='".$purl."/".$index."'>".$this->IndexPage."</a></li>";
$endpage = "<li><a href='".$purl."/".$totalpage."'>".$this->EndPage."</a></li>";

这里的 $this->PrePagethis->NextPage 等变量就是定义分页文本的地方,通常在类的开头或初始化函数中,你会找到这些变量的定义,

// 在 ArcListView 类的属性中定义
var $PrePage = '上一页';
var $NextPage = '下一页';
var $IndexPage = '首页';
var $EndPage = '末页';
var $ListTag = 'li'; // 默认的列表标签

修改方法: 直接修改这些变量的值即可,将 var $PrePage = '上一页'; 改为 var $PrePage = '&laquo;';

修改每页显示的条目数

这通常在调用列表标签时通过 pagesize 参数控制,或者在栏目/频道设置中指定。

  • 在模板中指定: 在列表页的调用标签中,可以覆盖默认的每页条数。

    {dede:list pagesize='20'}

    这会将当前列表页的每页显示数量设置为 20 条。

  • 在后台设置: 进入后台 -> “核心” -> “频道设置” -> “列表目录选项”,可以设置默认的列表页面大小。


添加“跳转到指定页”功能

DedeCMS 默认没有这个功能,需要手动添加,这需要同时修改模板和 PHP 文件。

步骤 1:修改 PHP 文件 (/include/arc.listview.class.php)

GetPageListSTL() 函数中,找到生成 $listdd 的地方,在循环结束后,添加跳转框的 HTML 代码。

// ... 在 GetPageListSTL 函数内,生成页码列表的循环之后 ...
$listdd .= "</ul>";
// 【新增】添加跳转功能
$listdd .= "<span class='page-go'>";
$listdd .= "到第<input type='text' name='page' size='3' class='input-txt' />页";
$listdd .= "<input type='button' class='input-btn' value='Go' onclick='goPage(\"".$purl."\",this.form)'/>";
$listdd .= "</span>";
// ... 函数返回部分 ...
return $listdd;

步骤 2:修改模板文件 (list_xxx.htm)

在分页标签的 ul 容器内,添加一个 form 表单,并确保 pagelist 标签生成的跳转代码能被正确包含。

<div class="dede_pages">
    <ul class="pagelist">
        {dede:pagelist listitem="info,index,end,pre,next,pageno" listsize="5" /}
        <!-- 【新增】这里不需要再添加,因为PHP里已经生成了 -->
    </ul>
</div>
<!-- 【新增】添加一个隐藏的表单,用于提交跳转请求 -->
<form name="pagelistform" action="" method="get" style="display:none;">
    <input type="hidden" name="tid" value="{dede:field.tid/}" />
    <!-- 可以添加其他需要的隐藏参数,如 -->
    <!-- <input type="hidden" name="keyword" value="{dede:field.keyword/}" /> -->
</form>
<!-- 【新增】添加JS处理函数 -->
<script type="text/javascript">
function goPage(purl, e) {
    var page = e.elements['page'].value;
    if(isNaN(page) || page < 1){
        alert('请输入正确的页码!');
        e.elements['page'].focus();
        return false;
    }
    // 获取总页数,可以从PHP传过来,也可以在这里用JS计算
    var totalpage = "{dede:pagelist listsize='0' iteminfo='totalpage'/}";
    if(page > totalpage){
        alert('请输入正确的页码!');
        e.elements['page'].focus();
        return false;
    }
    // 将页码值赋给隐藏表单的tid参数,并提交
    document.pagelistform.action = purl + '/' + page;
    document.pagelistform.submit();
}
</script>

步骤 3:添加 CSS 样式

为了让跳转框更美观,在 CSS 文件中添加样式:

/* 跳转框样式 */
.page-go {
    display: inline-block;
    margin-left: 10px;
    line-height: 32px; /* 与分页按钮对齐 */
    vertical-align: middle;
}
.page-go .input-txt {
    width: 40px;
    height: 30px;
    border: 1px solid #ddd;
    margin: 0 5px;
    text-align: center;
}
.page-go .input-btn {
    width: 50px;
    height: 32px;
    border: 1px solid #ddd;
    background: #f5f5f5;
    cursor: pointer;
}

总结与建议

修改需求 推荐方法 涉及文件 风险等级
修改样式 修改 CSS 模板 CSS 文件
修改文字 修改 PHP 变量 /include/arc.listview.class.php
修改每页数量 使用模板参数或后台设置 模板文件 / 后台
添加跳转功能 修改 PHP + 模板 + JS /include/arc.listview.class.php, 模板文件, JS

重要提示

  • 修改核心 PHP 文件后,如果未来升级 DedeCMS,你的修改可能会被覆盖,请务必保留一份修改记录或使用版本控制工具。
  • 对于不熟悉 PHP 的用户,强烈建议优先使用 CSS 方法来修改分页外观,这是最安全、最灵活的方式。
  • 在修改前,务必备份
-- 展开阅读全文 --
头像
dede如何调用网站名称?
« 上一篇 04-23
movepen C语言怎么用?
下一篇 » 04-23

相关文章

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

目录[+]