dede list分页如何修改?

99ANYc3cd6
预计阅读时长 20 分钟
位置: 首页 DEDE建站 正文
  1. 修改分页的 HTML 结构和 CSS 样式:这是最核心的部分,决定了分页块长什么样。
  2. 修改分页的显示逻辑:比如自定义“上一页/下一页”的文字,或者修改每页显示的条数等。

下面我将分步详细讲解如何进行修改。

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

第一步:定位核心文件

DedeCMS 的列表分页功能由两个核心文件控制:

  1. include/arc.listview.class.php:分页的逻辑处理文件,分页的算法、获取总页数、当前页码等都在这里计算,如果你需要修改分页的逻辑(比如修改上一页/下一页的文字),需要修改这个文件。
  2. templets/default/list_page.htm:分页的模板文件,它定义了分页块最终的 HTML 结构和默认的样式。99% 的样式修改和结构修改都在这里进行。

重要提示:强烈建议在修改文件前,先对原文件进行备份!


第二步:修改分页样式和结构 (list_page.htm)

这是最常用、最安全的修改方式,你只需要修改模板文件,而不用去动核心逻辑文件。

备份原文件

复制 templets/default/list_page.htm 文件,并重命名一个备份,list_page.htm.bak

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

打开并编辑 list_page.htm

默认的 list_page.htm 内容非常简单,通常是这样的:

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

这里的 {dede:pagelist} 是一个底层模板标签,它会根据 arc.listview.class.php 中的逻辑,生成具体的分页链接和文字。

理解 {dede:pagelist} 标签的属性

listitem 属性用来控制显示哪些分页元素,你可以根据需要增减:

  • index:首页
  • pre:上一页
  • pageno:页码
  • next:下一页
  • end:尾页
  • info:页码信息 (如:共 45 条记录,当前第 1/3 页)

listsize 属性控制显示多少个页码按钮。

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

自定义分页的 HTML 和 CSS

我们可以通过重写 {dede:pagelist} 的底层模板,来完全控制分页的 HTML 结构,这是一个更高级但更灵活的方法。

操作方法:

templets/default/ 目录下,新建一个文件 listpage.htm,这个文件将作为分页的底层模板。

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

listpage.htm 中写入以下代码:

<li><a href='javascript:void(0);' class='pageinfo'>共{totalresult}条</a></li>
<li><a href='{prepage}' class='pre'>上一页</a></li>
{pagelist}
<li><a href='{nextpage}' class='next'>下一页</a></li>
<li><a href='index_{page}.html' class='page-en'>尾页</a></li>

代码解释:

  • {totalresult}:总记录数
  • {prepage}:上一页的链接
  • {nextpage}:下一页的链接
  • {pagelist}:页码列表,这个标签本身会循环生成多个 <li>,每个 <li> 包含一个页码链接。
  • {page}:当前页码
  • {totalpage}:总页数

修改 list_page.htm 以使用新的模板

回到 templets/default/list_page.htm 文件,将其修改为:

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

关键点在于增加了 template='listpage' 属性,这告诉 {dede:pagelist} 标签去使用我们刚刚创建的 listpage.htm 模板来渲染分页。

添加 CSS 样式

在你的网站 CSS 文件(style.css)中,为分页添加样式,使其看起来更美观。

/* 分页容器样式 */
.dede_pages {
    text-align: center;
    margin: 20px 0;
    font-size: 12px;
}
.dede_pages .pagelist {
    display: inline-block;
    list-style: none;
    padding: 0;
    margin: 0;
}
.dede_pages .pagelist li {
    float: left;
    margin: 0 5px;
}
.dede_pages .pagelist li a {
    display: block;
    padding: 5px 12px;
    border: 1px solid #ddd;
    color: #333;
    text-decoration: none;
    border-radius: 3px;
}
.dede_pages .pagelist li a:hover {
    background-color: #f8f8f8;
    border-color: #ccc;
}
/* 当前页样式 */
.dede_pages .pagelist li a.curpage {
    background-color: #007bff;
    color: #fff;
    border-color: #007bff;
}
/* 上一页/下一页样式 */
.dede_pages .pagelist li a.pre,
.dede_pages .pagelist li a.next {
    padding: 5px 15px;
}
/* 首页/尾页样式 */
.dede_pages .pagelist li a.page-en {
    padding: 5px 12px;
}

第三步:修改分页逻辑 (arc.listview.class.php)

如果你需要修改分页的“文字”或“行为”,就需要修改这个文件。

场景:修改“上一页”和“下一页”的文字

默认是“上一页”和“下一页”,你可能想改成 « 和 » 或者 «上一页 和 下一页»。

  1. 打开 include/arc.listview.class.php 文件。
  2. 使用编辑器的“查找”功能,搜索 GetPageListDM 函数。
  3. 在函数内,找到定义 $prepage$nextpage 变量的地方,通常是 $prepage = "<a href='".$purl."'>$prepage</a>";$nextpage = "<a href='".$purl."'>$nextpage</a>";
  4. 在这两行代码之前,找到定义 $prepage$nextpage 文字的地方,$prepage = "上一页";$nextpage = "下一页";
  5. 将它们修改为你想要的文字。

示例:

// 在 GetPageListDM 函数内找到类似这样的代码
// ...
$prepage = "上一页"; // 修改这里
$nextpage = "下一页"; // 修改这里
// ...
$purl .= "&TotalResult=$totalresult";
$plist = '';
if($this->PageNo != 1){
    $prepage.="<a href='".$purl."'>".$prepage."</a>";
    $plist .= $prepage;
}
// ...

注意:直接修改核心文件在升级 DedeCMS 时可能会被覆盖,因此修改后请务必记下你的修改内容,以便未来升级后重新应用。


第四步:修改每页显示条数

这个设置不在分页文件里,而是在列表页模板的查询标签中。

打开你的列表页模板文件,templets/default/list_article.htm,找到 {dede:list}

{dede:list pagesize='20'}
    <!-- 你的列表内容 -->
    <li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:list}

通过修改 pagesize 属性的值,就可以控制列表页每页显示的文章数量。


总结与最佳实践

修改目标 涉及文件 方法 风险
修改分页样式、HTML结构 templets/default/list_page.htm
templets/default/listpage.htm (新建)
推荐方法:创建新的底层模板 listpage.htm,并在 list_page.htm 中通过 template 属性调用。 低风险,只涉及模板,不影响核心逻辑,升级安全。
修改分页文字(如上一页/下一页) include/arc.listview.class.php GetPageListDM 函数中修改对应的变量值。 高风险,修改了核心文件,升级时会被覆盖。
修改每页显示条数 templets/default/你的列表模板.htm 修改 {dede:list} 标签的 pagesize 属性。 低风险,属于模板常规设置。

最佳实践流程:

  1. 需求分析:确定你需要修改的是样式还是逻辑。
  2. 样式修改
    • 备份 templets/default/list_page.htm
    • templets/default/ 下新建 listpage.htm,编写你想要的 HTML 结构。
    • list_page.htm 中,给 {dede:pagelist} 添加 template='listpage' 属性。
    • 在你的网站 CSS 文件中,为 .pagelist 相关的类添加样式。
  3. 逻辑修改
    • 谨慎操作,备份 include/arc.listview.class.php
    • 修改文件,实现你的需求。
    • 强烈建议:将修改内容记录下来,以便未来升级后手动恢复。
  4. 清空缓存:修改完成后,务必在 DedeCMS 后台“系统” -> “一键更新网站” -> “更新缓存”,否则可能看不到效果。

通过以上步骤,你就可以灵活地自定义 DedeCMS 的列表分页了。

-- 展开阅读全文 --
头像
织梦发表文章去掉验证码
« 上一篇 01-05
c程序设计语言 pdf 第三版
下一篇 » 01-06

相关文章

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