修改模板文件(推荐,最灵活)
这是最常用且最灵活的方法,你只需要修改列表页的模板文件,通过CSS来控制分页的样式即可,这种方法不涉及核心文件修改,升级系统时不会丢失。

操作步骤:
-
找到列表模板文件 登录你的DedeCMS后台,进入【模板】->【默认模板管理】。 找到你当前使用的列表模板,通常是
list_article.htm(文章列表) 或list_product.htm(产品列表) 等,点击后面的【修改】按钮。 -
定位分页代码 在模板文件中,找到分页的代码,它通常是这样的:
<div class="dede_pages"> <ul class="pagelist"> {dede:pagelist listsize='5' listitem='index,pre,next,end,pageno'} </ul> </div>{dede:pagelist}这个标签就是用来生成分页导航的。 -
修改HTML结构(关键步骤) 默认情况下,
{dede:pagelist}会生成一个<ul>列表,里面的<li>元素是横向排列的,为了实现竖排,我们需要将这个列表结构从横向的“菜单”样式,改成纵向的“列表”样式。
(图片来源网络,侵删)我们可以将
<ul>的class改为pagelist-vertical,并确保每个分页项<li>都是块级元素并换行。修改后的HTML结构如下:
<!-- 在你的列表内容下方,找到原来的分页代码,替换成这个 --> <div class="dede_pages"> <!-- 给 ul 添加一个新的 class,方便我们用CSS控制 --> <ul class="pagelist pagelist-vertical"> {dede:pagelist listsize='5' listitem='index,pre,next,end,pageno'} </ul> </div> -
添加CSS样式 你需要添加CSS代码来让这个分页列表竖直排列,你可以将以下CSS代码添加到模板文件的
<head>标签内,或者链接到你的外部CSS文件中。/* 竖排分页样式 */ .pagelist-vertical { list-style: none; /* 移除默认的列表符号 */ padding: 0; margin: 20px 0; /* 上下间距 */ text-align: left; /* 文本左对齐,也可以根据需要居中 */ } .pagelist-vertical li { display: block; /* 这是关键!将li元素变成块级元素,使其独占一行 */ margin: 5px 0; /* 每个分页项之间的垂直间距 */ /* 如果你希望分页项之间有分隔线,可以加上下面这行 */ /* border-bottom: 1px solid #eee; */ } /* 可选:让分页链接看起来更美观 */ .pagelist-vertical li a { display: block; /* 让链接充满整个li */ padding: 8px 15px; text-decoration: none; color: #333; border: 1px solid #ddd; border-radius: 3px; } .pagelist-vertical li a:hover { background-color: #f5f5f5; color: #0066cc; } /* 当前页码的样式 */ .pagelist-vertical .thisclass { background-color: #0066cc; color: #fff; border-color: #0066cc; cursor: default; } .pagelist-vertical .thisclass a { color: #fff; background-color: transparent; border: none; }
完整效果预览:
list_article.htm 中的修改示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">{dede:field.title/}_{dede:global.cfg_webname/}</title>
<!-- 引入你的CSS文件,或者在这里写style标签 -->
<style>
/* 竖排分页样式 */
.pagelist-vertical {
list-style: none;
padding: 0;
margin: 20px 0;
text-align: left;
}
.pagelist-vertical li {
display: block;
margin: 5px 0;
}
.pagelist-vertical li a {
display: block;
padding: 8px 15px;
text-decoration: none;
color: #333;
border: 1px solid #ddd;
border-radius: 3px;
}
.pagelist-vertical li a:hover {
background-color: #f5f5f5;
color: #0066cc;
}
.pagelist-vertical .thisclass {
background-color: #0066cc;
color: #fff;
border-color: #0066cc;
cursor: default;
}
.pagelist-vertical .thisclass a {
color: #fff;
background-color: transparent;
border: none;
}
</style>
</head>
<body>
<!-- 你的列表内容... -->
{dede:list pagesize='20'}
<h3><a href="[field:arcurl/]">[field:title/]</a></h3>
<p>[field:description function='cn_substr(@me, 100)']...</p>
<hr>
{/dede:list}
<!-- 分页区域 - 修改这里 -->
<div class="dede_pages">
<ul class="pagelist pagelist-vertical">
{dede:pagelist listsize='5' listitem='index,pre,next,end,pageno'}
</ul>
</div>
</body>
</html>
修改PHP文件(不推荐,有风险)
这种方法通过修改DedeCMS的核心PHP文件来改变分页的默认HTML结构。强烈不推荐,因为:
- 升级风险:当你升级DedeCMS时,这些修改会被覆盖,需要重新修改。
- 维护困难:不便于团队协作和后期维护。
- 可能引入bug:直接修改核心文件可能导致不可预知的问题。
如果你仍然想了解,操作如下:
-
找到PHP文件 文件路径为:
/include/arc.listview.class.php -
找到并修改代码 在这个文件中搜索
GetPageListST函数,你会找到生成分页HTML的代码块,通常包含大量的str_replace来替换模板标签。你需要找到生成
<li>标签的部分,并修改它,在每个<li>后面加上换行符\n,并确保<li>标签是块级元素。找到类似这样的代码:
$liststr = str_replace('<li>', '<li>' . "\n", $liststr);这部分代码可能已经存在,确保它没有被注释掉或修改。
更复杂的修改是找到生成整个
<ul>的部分,直接修改其结构,这需要你对PHP和正则表达式比较熟悉。
再次强调:此方法风险高,除非你非常清楚自己在做什么,否则请优先选择方法一。
总结与建议
| 方法 | 优点 | 缺点 | 推荐度 |
|---|---|---|---|
| 修改模板 | 安全、灵活、可维护,升级系统不受影响 | 需要手动添加CSS | ⭐⭐⭐⭐⭐ (强烈推荐) |
| 修改PHP | 可以从根本上改变默认行为 | 有风险、难维护、升级会失效 | ⭐ (不推荐,仅限高级玩家) |
对于绝大多数用户来说,方法一是最佳选择,它只需要你修改模板文件和添加几行CSS代码,既安全又能达到你想要的效果,是Web开发中的标准实践。
