dede pagelist分页显示如何设置与优化?

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

{dede:pagelist} 标签的基本语法

{dede:pagelist} 通常与 {dede:list}{dede:arclist} 标签一起使用,放在它们循环体的外部

dede pagelist 分页显示
(图片来源网络,侵删)

基本结构示例:

{dede:list pagesize='10'}
    <!-- 这里是列表内容循环 -->
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
    </li>
{/dede:list}
<!-- 分页导航代码 -->
<div class="dede_pages">
    <ul class="pagelist">
        {dede:pagelist listitem="info,index,end,pre,next,pageno" listsize="5"/}
    </ul>
</div>

{dede:pagelist} 核心属性详解

{dede:pagelist} 的显示效果和功能主要由其 listitemlistsize 属性控制。

listitem 属性 (最重要)

这个属性用于控制分页导航栏上显示哪些元素,多个元素用英文逗号 隔开。

可选值及其含义:

dede pagelist 分页显示
(图片来源网络,侵删)
说明 示例 HTML
index 首页 <a href='...'>首页</a>
pre 上一页 <a href='...'>上一页</a>
pageno 页码 <span class='thisclass'>1</span><a href='...'>2</a>
next 下一页 <a href='...'>下一页</a>
end 末页 <a href='...'>末页</a>
info 分页信息 <span class='pageinfo'>共 <strong>10</strong> 页/<strong>100</strong> 条</span>
option 下拉跳转菜单 <select>...</select> (包含所有页码)
plus 附加功能 通常用于显示“/”等分隔符

常用组合示例:

  • 简洁型 (只显示上一页、页码、下一页):

    {dede:pagelist listitem='pre,pageno,next' listsize='2'/}

    效果可能像:« 上一页 1 2 3 4 5 下一页 »

  • 标准型 (包含首页、末页和详细信息):

    dede pagelist 分页显示
    (图片来源网络,侵删)
    {dede:pagelist listitem='index,pre,next,end,info,pageno' listsize='3'/}

    效果可能像:首页 上一页 ... 3 4 5 [6] 7 8 9 ... 下一页 末页 共10页/100条

  • 完整型 (包含所有元素):

    {dede:pagelist listitem='index,pre,next,end,option,info,pageno' listsize='5'/}

listsize 属性

这个属性用于控制页码列表显示的“宽度”,即当前页码左右两侧各显示多少个页码。

示例:

  • listsize='2':如果当前在第 5 页,会显示 3, 4, [5], 6, 7
  • listsize='3':如果当前在第 5 页,会显示 2, 3, 4, [5], 6, 7, 8
  • 如果总页数较少,listsize 不会导致页码重复或溢出。

{dede:pagelist} 的样式自定义

默认情况下,{dede:pagelist} 生成的 HTML 结构比较固定,我们可以通过 CSS 来美化它。

默认生成的 HTML 结构

<ul class="pagelist">
    <li><a href="...">首页</a></li>
    <li><a href="...">上一页</a></li>
    <li><span class="thisclass">1</span></li> <!-- 当前页 -->
    <li><a href="...">2</a></li>
    <li><a href="...">3</a></li>
    <li><a href="...">下一页</a></li>
    <li><a href="...">末页</a></li>
    <li><span class="pageinfo">共 10 页</span></li>
</ul>

关键 class 名称:

  • thisclass: 应用于当前页码的 <span>
  • pageinfo: 应用于分页信息文本的 <span>

CSS 样式示例

你可以将以下 CSS 添加到你的模板的 CSS 文件中,以获得一个美观的分页效果。

/* 分页容器样式 */
.dede_pages {
    text-align: center;
    margin: 20px 0;
    font-size: 14px;
}
/* 分页列表容器 */
.pagelist {
    display: inline-flex; /* 使用 flex 布局让列表项水平排列 */
    list-style: none;
    padding: 0;
    margin: 0;
    border: 1px solid #e0e0e0;
    border-radius: 4px;
    overflow: hidden; /* 确保圆角生效 */
}
/* 每个分页项的样式 */
.pagelist li {
    margin: 0;
}
.pagelist li a,
.pagelist li span {
    display: block;
    padding: 8px 12px;
    text-decoration: none;
    color: #333;
    border-right: 1px solid #e0e0e0; /* 分隔线 */
}
/* 最后一项的右边框去掉 */
.pagelist li:last-child a,
.pagelist li:last-child span {
    border-right: none;
}
/* 链接的悬停效果 */
.pagelist li a:hover {
    background-color: #f0f0f0;
    color: #007bff;
}
/* 当前页码的样式 */
.pagelist li span.thisclass {
    background-color: #007bff;
    color: #fff;
    cursor: default; /* 当前页不可点击 */
}
/* 分页信息样式 */
.pagelist li span.pageinfo {
    padding: 8px 12px;
    color: #666;
    border-right: 1px solid #e0e0e0;
}

常见问题与解决

分页样式混乱或不起作用

  • 原因: CSS 选择器优先级不够,或者 CSS 文件未正确加载。
  • 解决方法:
    1. 使用浏览器开发者工具(F12)检查 ul.pagelistspan.thisclass 等元素是否被你的其他 CSS 规则覆盖。
    2. 在 CSS 选择器前增加更具体的选择器,body .pagelist li span.thisclass
    3. 确保你的 CSS 文件在模板中被正确引入。

想要修改“首页”、“末页”等显示的文字

  • 原因: 这些是 DedeCMS 的默认文字。
  • 解决方法:
    1. 直接修改模板文件(不推荐,升级会失效): 打开 /include/arc.listview.class.php 文件,搜索 GetPageListDM 函数,找到 $maininfo = "共{$totalpage}页".$maininfo; 这类代码,修改其中的字符串。
    2. 推荐方法(使用语言包): 修改 /templets/default/style/dedecms.css 中的 afterbefore 伪元素(如果存在),但这通常不直接管用,最稳妥的方法是使用第一种方法,并做好备份。

如何让分页在移动端更美观?

  • 解决方法: 使用响应式 CSS。

    • 在小屏幕上,可以隐藏首页、末页,只保留上一页、下一页和页码。
    • 或者使用 @media 查询来调整 pagelist 的布局和字体大小。

    示例:

    @media screen and (max-width: 768px) {
        .pagelist {
            flex-wrap: wrap; /* 允许换行 */
            justify-content: center;
        }
        .pagelist li {
            margin: 2px; /* 增加间距 */
        }
        .pagelist li a,
        .pagelist li span {
            padding: 6px 10px;
            font-size: 12px;
        }
        /* 可选:隐藏首页末页 */
        .pagelist li a[href*="index"],
        .pagelist li a[href*="end"] {
            display: none;
        }
    }

{dede:pagelist} 是 DedeCMS 列表页功能的核心,要掌握它,你需要:

  1. 理解基本语法:知道它放在 {dede:list} 循环体外。
  2. 熟练使用 listitem:根据需求组合显示不同的分页元素。
  3. 掌握 listsize:控制页码显示的数量。
  4. 学会自定义 CSS:通过 .pagelist, .thisclass 等类名来美化分页样式,使其与网站整体风格保持一致。

希望这份详细的教程能帮助你完全掌握 DedeCMS 的分页功能!

-- 展开阅读全文 --
头像
phpcms、帝国、织梦三大系统该如何选?
« 上一篇 2025-12-12
C语言编译程序的首要工作究竟是什么?
下一篇 » 2025-12-12

相关文章

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