使用 listitem 属性(推荐)
这是最简单、最官方的方法。listitem 属性用于指定要显示的分页项,它会自动应用相应的样式,并且不包含 <li>。

默认情况下,{dede:pagelist} 会显示 首页、上一页、页码、下一页、末页,你可以通过 listitem 来控制显示哪些项。
基本语法:
{dede:pagelist listitem='index,pre,next,end'/}
参数说明:
index: 首页pre: 上一页pageno: 当前页码(通常不需要单独列出,页码列表会自动包含)next: 下一页end: 末页option+下拉跳转框: 带有 "跳转到" 文本的下拉选择框
示例:

假设你只想显示“上一页”、“页码”和“下一页”,可以这样写:
<div class="dede_pages">
<ul class="pagelist">
{dede:pagelist listitem='pre,next,pageno'/}
</ul>
</div>
这样生成的 HTML 结构会是:
<div class="dede_pages">
<ul class="pagelist">
<span class="pagepre"><a href="/list/1_1.html">上一页</a></span>
<span class="pageinfo">1/10</span>
<span class="pagenxt"><a href="/list/1_2.html">下一页</a></span>
</ul>
</div>
可以看到,分页项被 <span> 标签包裹,而不是 <li>,完美解决了问题。
使用自定义样式和函数(高级用法)
如果你对分页的 HTML 结构有完全自定义的需求,或者默认的 listitem 无法满足,你可以采用更灵活的方式:在列表页模板中,通过自定义的 PHP 函数来生成分页。

这种方法比较复杂,但能实现任何你想要的 HTML 结构。
步骤:
-
在列表页模板中禁用默认分页 在你的列表页模板文件(通常是
/templets/default/list_article.htm)中,找到{dede:pagelist/}标签并将其删除或注释掉。 -
添加自定义的 PHP 代码 在模板中你希望显示分页的位置,添加如下代码:
<div class="my-custom-pagination"> <?php // 获取分页函数 $listpage = ''; // 调用DedeCMS内置的分页函数,传入模板文件路径 // 你需要先在 /templets/default/ 目录下创建一个分页模板文件,mypage.htm $listpage = preg_replace('/<li[^>]*>/', '', $listpage); // 如果还想简单点,可以在这里用正则替换掉li,但不推荐 echo $listpage; ?> </div> -
创建自定义分页模板 在
/templets/default/目录下,创建一个新的文件,mypage.htm,这个文件将定义分页的 HTML 结构。mypage.htm文件内容示例:<span class="page-pre"><a href='[!--preurl--]'>上一页</a></span> <span class="page-num">[!--nowpage--] / [!--totalpage--]</span> <span class="page-next"><a href='[!--nexturl--]'>下一页</a></span>
在这个模板文件里,你可以使用 DedeCMS 的分页变量,如
[!--preurl--](上一页链接),[!--nexturl--](下一页链接),[!--nowpage--](当前页),[!--totalpage--](总页数) 等。 -
修改 PHP 代码以调用新模板 修改列表页模板中的 PHP 代码,使其调用你刚刚创建的
mypage.htm。<?php // 引入分页类 require_once(DEDEINC.'/arc.partview.class.php'); // 获取当前文档的环境信息 $pv = new PartView(); $pv->SetTemplet($GLOBALS['cfg_basedir'].$GLOBALS['cfg_templets_dir'].'/default/mypage.htm'); $pv->Display(); ?>
这种方法非常灵活,但需要对 PHP 和 DedeCMS 有一定的了解,对于绝大多数用户来说,方法一已经足够。
总结与推荐
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
listitem 属性 |
简单、快速、官方推荐,无需修改文件,只需调整标签。 | 灵活性较低,只能选择预设的分页项,无法自定义 HTML 标签。 | 绝大多数情况下的首选,能快速解决去掉 <li> 的需求。 |
| 自定义函数 | 灵活性极高,可以完全控制分页的 HTML 结构和样式。 | 复杂,需要修改模板文件,甚至需要懂一些 PHP 代码。 | 当你需要非常特殊的分页样式,或者 listitem 无法满足业务需求时。 |
请优先使用 方法一,在你的列表页模板中,将原来的 {dede:pagelist/} 替换为:
{dede:pagelist listitem='index,pre,next,end'/}
并根据你的需要调整 listitem 的值即可,这是最干净、最安全的解决方案。
