dede pagelist总页数如何获取?

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

{dede:pagelist} 标签本身是用来生成分页导航链接(如“首页 上一页 1 2 3 4 5 下一页 末页”)的,它不直接输出总页数这个数字,我们可以通过其他方法来获取它,并在模板中显示出来。

dede pagelist 的总页数
(图片来源网络,侵删)

主要有以下三种方法,推荐程度从高到低:


使用 {dede:pagecount} 标签(最推荐、最标准)

这是 DedeCMS 官方提供的、专门用于获取当前栏目或文档列表总页数的标签,它和 {dede:pagelist} 是“兄弟”标签,通常配合使用。

使用场景: 在列表页模板(通常是 list_article.htm)中,你想在分页导航的上方或下方显示一句话,“共 5 页,23 条记录”。

代码示例:

dede pagelist 的总页数
(图片来源网络,侵删)

在你的列表页模板文件(如 /templets/default/list_article.htm)中,找到 {dede:pagelist} 的位置,在其附近添加 {dede:pagecount}

<div class="dede_pages">
    <ul class="pagelist">
        <!-- 显示总页数和总记录数 -->
        <strong>
            {dede:pagecount/} 
            页 / 
            {dede:global.totalcount/} 
            条
        </strong>
        <!-- 原有的分页导航链接 -->
        {dede:pagelist listsize='5' listitem='index pre pageno next end '/}
    </ul>
</div>

代码解析:

  1. {dede:pagecount/}: 这个标签会直接输出当前列表页的总页数,如果列表有 50 条数据,每页显示 10 条,它会输出 5
  2. {dede:global.totalcount/}: 这个全局变量用于获取当前列表的总记录数,和 pagecount 一起使用,信息更完整。
  3. {dede:pagelist ...}: 这是你原来的分页导航链接,保持不变。

最终效果: 页面会显示类似 共 5 页,50 条记录 的文字,下面跟着 首页 上一页 1 2 3 4 5 下一页 末页 的链接。


使用 PHP 代码获取(灵活但需修改模板文件)

如果你想在更复杂的地方使用总页数,或者你的模板版本比较旧没有 {dede:pagecount} 标签,你可以直接在模板文件里嵌入 PHP 代码来获取。

使用场景: 需要将总页数赋值给一个 PHP 变量,然后在模板的其他地方进行逻辑判断或样式控制。

dede pagelist 的总页数
(图片来源网络,侵删)

代码示例:

在列表页模板文件(list_article.htm)中,使用 DedeCMS 的内置对象 $this 来获取。

<div class="dede_pages">
    <ul class="pagelist">
        <!-- 使用PHP代码获取总页数 -->
        <strong>
            总页数:<?php echo $this->PageNo; ?> 
        </strong>
        <!-- 或者获取总记录数,然后自己计算 -->
        <strong>
            总记录数:<?php echo $this->TotalResult; ?>, 
            每页 <?php echo $this->GetItemsPerPage(); ?> 条,
            总页数:<?php echo ceil($this->TotalResult / $this->GetItemsPerPage()); ?>
        </strong>
        <!-- 原有的分页导航链接 -->
        {dede:pagelist listsize='5' listitem='index pre pageno next end '/}
    </ul>
</div>

代码解析:

  • $this->PageNo: 这是 DedeList 类的一个属性,它本身就包含了计算好的总页数。这是最直接、最高效的 PHP 方法
  • $this->TotalResult: 获取总记录数。
  • $this->GetItemsPerPage(): 获取每页显示的记录数。
  • ceil(...): PHP 的向上取整函数,用于计算总页数(51条记录/每页10条 = 5.1页,向上取整为6页)。

注意: 直接在模板中写 PHP 代码需要确保你的服务器环境支持,并且模板文件没有被禁用 PHP 代码。


使用 JS 动态获取(不推荐,性能较差)

这种方法通过 JavaScript 解析 {dede:pagelist} 生成的 HTML 结构来找出总页数。非常不推荐,因为它会增加页面加载时间,且依赖于 HTML 结构的稳定性,一旦 DedeCMS 升级导致分页 HTML 结构变化,代码就会失效。

使用场景: 仅作为了解,或在无法修改 PHP 模板的极端情况下使用。

代码示例:

假设你的分页 HTML 结构如下:

<ul class="pagelist">
    <span class="pageinfo">共 <strong>5</strong> 页</span>
    <a href="list_1.html">首页</a>
    ...
</ul>

你可以用 JS 这样获取:

// 在页面加载完成后执行
window.onload = function() {
    // 找到包含总页数的 span 元素
    var pageInfoSpan = document.querySelector('.pagelist .pageinfo strong');
    if (pageInfoSpan) {
        var totalPages = pageInfoSpan.innerText;
        console.log('总页数是: ' + totalPages);
        // 你可以在这里用获取到的 totalPages 做其他事情
    }
};

总结与对比

方法 优点 缺点 推荐度
{dede:pagecount} 官方标准,代码简洁,性能最好 需要较新版本的 DedeCMS 支持 ⭐⭐⭐⭐⭐ (强烈推荐)
PHP 代码 非常灵活,功能强大,适用于任何场景 需要修改模板文件,写一点 PHP 代码 ⭐⭐⭐⭐ (官方标签不可用时的最佳选择)
JS 动态获取 无需后端修改,纯前端实现 性能差,不稳定,维护困难 ⭐ (不推荐,仅作了解)

在你的 DedeCMS 项目中,请优先使用方法一 {dede:pagecount},这是最正确、最稳定、最高效的获取总页数的方式。

-- 展开阅读全文 --
头像
织梦CMS自定义表单如何管理时间字段?
« 上一篇 2025-12-11
dede global.cfg mc配置作用与影响是什么?
下一篇 » 2025-12-11

相关文章

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