dede如何修改分页码样式或数字?

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

修改分页显示的字符(“上一页” 改为 “Prev”)

这是最常见的需求,通常通过修改模板文件来实现。

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

找到并编辑分页模板

DedeCMS 的分页模板文件位于 /include/arc.listview.class.php 中,但强烈不建议直接修改这个核心文件,因为升级会被覆盖,正确的方法是通过修改你的模板文件来覆盖默认行为。

在你的模板文件夹(/templets/default/)中,找到你正在使用的列表模板文件,通常是 list_article.htm

定位分页标签

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

list_article.htm 文件中,找到分页的调用标签,它通常是这样的:

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

这里的 {dede:pagelist} 就是控制分页显示的标签。

使用 listitem 属性控制显示项

listitem 属性决定了分页显示哪些部分,你可以通过修改它来隐藏或显示你想要的内容。

dede 修改分页码
(图片来源网络,侵删)
  • info: 显示 “共几页,几条信息”
  • index: 显示首页
  • pre: 显示上一页
  • pageno: 显示页码
  • next: 显示下一页
  • end: 显示末页
  • option: 显示跳转下拉框

自定义分页文字(高级方法)

如果你想在模板中直接自定义分页文字,而不仅仅是隐藏它们,可以采用以下方法:

list_article.htm 中,你可以用 if 条件语句来分别控制上一页和下一页的显示,并自定义文字。

示例:将“上一页”改为“Prev”,“下一页”改为“Next”

<div class="dede_pages">
    <ul class="pagelist">
        <!-- 上一页 -->
        {dede:pagelist listitem='pre' runphp='yes'}
            if(@me == "<a href='javascript:;'>上一页</a>") {
                @me = "<a href='javascript:;'>Prev</a>";
            }
            else {
                @me = @me;
            }
        {/dede:pagelist}
        <!-- 页码 -->
        {dede:pagelist listitem='pageno' listsize='5' /}
        <!-- 下一页 -->
        {dede:pagelist listitem='next' runphp='yes'}
            if(@me == "<a href='javascript:;'>下一页</a>") {
                @me = "<a href='javascript:;'>Next</a>";
            }
            else {
                @me = @me;
            }
        {/dede:pagelist}
    </ul>
</div>

代码解释:

  • {dede:pagelist listitem='pre' runphp='yes'}:我们只调用“上一页”部分,并启用 runphp
  • if(@me == "..."):判断当前生成的分页代码是否是默认的“上一页”链接。
  • @me = "...":如果是,就将其内容替换为你想要的文字(如 "Prev")。
  • 对“下一页”做同样的处理。

修改分页的样式(CSS)

如果你想改变分页列表的外观,比如去掉边框、改变颜色、调整间距等,只需修改 CSS 文件即可。

找到 CSS 文件

在你的模板文件夹(/templets/default/)中,找到样式表文件 style.cssdedecms.css

定位并修改分页 CSS 类

在 CSS 文件中,找到与分页相关的类,通常有:

  • .pagelist: 分页列表的容器 <ul>
  • .pagelist li: 分页列表中的每一项 <li>
  • .pagelist a: 分页的链接 <a>
  • .pagelist .thisclass: 当前页的 <li> 样式。

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

假设你的 HTML 结构是:

<ul class="pagelist">
    <li><a href="javascript:;">Prev</a></li>
    <li><a href="javascript:;">1</a></li>
    <li class="thisclass"><a href="javascript:;">2</a></li>
    <li><a href="javascript:;">3</a></li>
    <li><a href="javascript:;">Next</a></li>
</ul>

你可以在 CSS 文件中添加或修改以下样式:

/* 分页列表容器 */
.pagelist {
    display: flex;
    list-style: none;
    padding: 0;
    margin: 20px 0;
    justify-content: center;
}
/* 分页列表项 */
.pagelist li {
    margin: 0 5px;
}
/* 分页链接 */
.pagelist a {
    display: block;
    padding: 8px 12px;
    border: 1px solid #ddd;
    border-radius: 4px;
    text-decoration: none;
    color: #333;
    transition: all 0.3s ease;
}
/* 鼠标悬停效果 */
.pagelist a:hover {
    background-color: #f0f0f0;
    border-color: #999;
}
/* 当前页样式 */
.pagelist .thisclass a,
.pagelist .thisclass {
    background-color: #007bff;
    color: #fff;
    border-color: #007bff;
    font-weight: bold;
}

修改分页链接的 URL 结构(高级)

如果你想修改分页链接的格式,例如将 list.php?tid=1&PageNo=2 改成 list/1_2.html 这样的伪静态形式,这需要修改核心函数。

⚠️ 警告:此操作涉及修改核心文件,请务必先备份!升级 DedeCMS 时,这些修改会被覆盖,需要重新操作。

找到核心函数文件

分页 URL 的生成逻辑在 /include/arc.listview.class.php 文件中。

修改 GetPageListDM 函数

打开 arc.listview.class.php 文件,找到 GetPageListDM 函数,这个函数负责生成分页的 HTML 代码。

你需要找到拼接 URL 的地方,通常在函数的末尾,默认的代码可能是这样的:

// ... 其他代码 ...
$listdd = "<li><a href='".$purl."PageNo=$i'>".$i."</a></li>";
// ... 其他代码 ...

你需要修改这里的 $purl 变量,使其符合你的伪静态规则。

示例:修改为 /list/1_2.html 格式

你需要找到生成 $purl 的部分,它通常在函数的开头,找到类似这样的代码:

$purl = $this->GetCurUrl();
$typedir = $this->Fields['typedir'];

你需要根据你的伪静态规则重新构造 $purl,如果你的栏目列表页伪静态规则是 list/{tid}_{PageNo}.html,你可以这样修改:

// 在 GetPageListDM 函数中,找到构造 $purl 的部分
// ... 原始代码可能如下 ...
// $purl = $this->GetCurUrl();
// 修改为:
$typedir = preg_replace('/\/$/', '', $this->Fields['typedir']); // 去掉末尾的斜杠
$tid = $this->TypeID;
$purl = $typedir . '_';

在生成链接的地方,确保它使用这个新的 $purl

// 原来的代码
// $listdd = "<li><a href='".$purl."PageNo=$i'>".$i."</a></li>";
// 修改为
$listdd = "<li><a href='".$purl.$i.".html'>".$i."</a></li>";

配合伪静态规则

仅仅修改 PHP 文件是不够的,你还需要在服务器的伪静态配置文件中添加相应的规则。

对于 Nginx: 在你的网站配置文件中添加:

rewrite ^/list/([0-9]+)_([0-9]+)\.html$ /list.php?tid=$1&PageNo=$2 last;

对于 Apache:.htaccess 文件中添加:

RewriteRule ^list/([0-9]+)_([0-9]+)\.html$ /list.php?tid=$1&PageNo=$2 [L]

总结与建议

修改目标 推荐方法 涉及文件 风险等级
修改分页文字 (如 上一页/下一页) 修改模板文件 (list_article.htm),使用 runphp /templets/你的模板/list_article.htm
修改分页样式 (CSS) 修改 CSS 文件 /templets/你的模板/style.css
修改分页链接格式 (URL) 修改核心文件 (arc.listview.class.php) + 服务器伪静态配置 /include/arc.listview.class.php, .htaccess 或 Nginx 配置 高 (升级会覆盖)

对于绝大多数用户,场景一和场景二已经足够满足需求。场景三是高级操作,仅当你对 DedeCMS 和服务器配置非常熟悉时才建议尝试。

-- 展开阅读全文 --
头像
hanning窗函数在C语言中如何高效实现?
« 上一篇 04-17
Codesys C语言如何高效编程?
下一篇 » 04-17

相关文章

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

目录[+]