在 DedeCMS 中,首页的分页主要通过 arclist 标签结合其 pageno 和 totalpage 等属性来实现,这主要用于两种常见场景:

(图片来源网络,侵删)
- 首页列表分页:首页本身就是一个文章列表,当文章数量超过设定的
listnum时,需要分页显示。 - 首页调用指定栏目并分页:在首页调用某个或某几个特定栏目的文章列表,并进行分页。
下面我将分步讲解如何实现这两种情况,并提供完整的代码示例和注意事项。
核心标签:arclist
arclist 是 DedeCMS 最强大、最常用的列表调用标签,它的分页功能也是通过这个标签自身的属性控制的。
关键分页属性:
typeid: 调用指定栏目的ID,如果为空或为0,则调用所有栏目的内容。(分页时,强烈建议指定typeid,否则分页逻辑可能混乱)row: 每页显示的文章数量,len`: 标题长度。limit: 分页的起始位置和结束位置,格式为起始位置, 显示数量。limit='0,10'表示从第0条开始,显示10条,这个属性通常与{dede:page/}标签配合使用,由系统自动填充。ismake: 是否生成静态页面,通常为0(动态)。orderway: 排序方式,desc为降序(默认),asc为升序。
首页列表分页
这是最直接的分页方式,即首页内容本身就是分页的。
操作步骤:
-
修改首页模板 (
index.htm) 在需要显示文章列表的地方,使用arclist标签调用内容,为了分页,arclist标签需要包裹在一个具有唯一ID的div中。
(图片来源网络,侵删)<!-- 首页主要内容区 --> <div id="main-content"> <!-- 首页文章列表分页开始 --> <div class="list"> {dede:arclist typeid='0' row='10' titlelen='30' orderby='pubdate' orderway='desc'} <li> <a href="[field:arcurl/]">[field:title/]</a> <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span> </li> {/dede:arclist} <!-- 分页条 --> <div class="dede_pages"> <ul class="pagelist"> {dede:page/} </ul> </div> </div> <!-- 首页文章列表分页结束 --> </div> -
后台设置
- 进入后台 -> 系统 -> 系统基本参数 -> 核心设置。
- 找到 “首页文件名”,确保是
index.htm。 - 找到 “首页文档默认分页条样式”,你可以选择一个内置的样式,或者自定义。
- 进入后台 -> 生成 -> 更新主页,重新生成首页。
代码解析:
{dede:arclist ...}: 调用文章列表。typeid='0': 调用所有顶级栏目,如果你的首页只显示某个栏目,请填写对应的栏目ID,typeid='1'。row='10': 这是每页显示的数量,这是控制分页的关键。
{dede:page/}: 这是分页的核心标签,它会自动根据arclist的row和总文章数,生成上一页、下一页、页码等链接。
首页调用指定栏目并分页
这是更常见的需求,比如想在首页的某个侧边栏或特定区块调用“产品展示”栏目的文章,并且这个区块也要分页。
操作步骤:
-
获取栏目ID 进入后台的【栏目管理】,找到你想要在首页调用的栏目,记下它的ID(产品展示栏目的ID是
3)。 -
修改首页模板 (
index.htm) 在你希望显示该栏目列表的位置,插入如下代码:
(图片来源网络,侵删)<!-- 首页指定栏目列表分页开始 --> <div class="product-list"> <h3>产品展示</h3> {dede:arclist typeid='3' row='5' titlelen='40' orderby='pubdate' orderway='desc'} <div class="item"> <a href="[field:arcurl/]"> <img src="[field:litpic/]" alt="[field:title/]"> <p>[field:title/]</p> </a> </div> {/dede:arclist} <!-- 分页条 --> <div class="dede_pages"> <ul class="pagelist"> {dede:page/} </ul> </div> </div> <!-- 首页指定栏目列表分页结束 --> -
后台设置与生成
- 重要:这种分页方式默认是动态的,如果你希望这些列表页也是静态的,你需要为这个栏目生成列表页。
- 进入后台 -> 生成 -> 目录批量更新。
- 在“选择栏目”中,选择你的“产品展示”栏目(ID为3的栏目)。
- 点击“开始生成”,系统会为该栏目生成
list_3_1.html,list_3_2.html等静态列表页。 - 首页上的分页链接会自动指向这些生成的静态页面。
代码解析:
typeid='3': 这是关键,它限定了arclist只调用ID为3的栏目下的文章,因此分页也只针对这个栏目。row='5': 每页显示5个产品。{dede:page/}: 同样,它会根据栏目ID为3的文章总数和每页5条的数量来生成分页。
高级与注意事项
自定义分页样式
{dede:page/} 生成的分页HTML结构比较固定,如果你想自定义样式,可以修改DedeCMS的源文件,但更推荐的是使用CSS来覆盖其样式。
默认的 pagelist 可能会有一些默认的类名,你可以这样用CSS来美化:
/* 自定义分页样式 */
.dede_pages .pagelist {
list-style: none;
display: flex;
justify-content: center;
gap: 5px;
}
.dede_pages .pagelist li {
display: inline-block;
}
.dede_pages .pagelist a,
.dede_pages .pagelist span {
display: block;
padding: 5px 10px;
border: 1px solid #ddd;
text-decoration: none;
color: #333;
}
.dede_pages .pagelist a:hover {
background-color: #f0f0f0;
}
.dede_pages .pagelist span.current { /* 当前页样式 */
background-color: #007bff;
color: white;
border-color: #007bff;
}
避免首页分页混乱
- 指定
typeid:如前所述,如果你的首页有多个分页区块,务必为每个arclist指定不同的typeid,否则分页逻辑会相互干扰。 - 使用不同的容器:确保每个分页区块都有独立的父容器(如
div),并给予不同的ID或类名,以便CSS和JS进行区分。
首页分页与SEO
- 静态化优先:对于有分页的首页或重要栏目列表页,强烈建议生成静态HTML,静态页面加载更快,对搜索引擎更友好。
- 规范URL:确保分页URL清晰明了,
index_2.html或list_3_2.html,避免使用?p=2这样的动态参数(除非你做了伪静态)。
| 功能 | 核心标签 | 关键属性 | 说明 |
|---|---|---|---|
| 首页列表分页 | {dede:arclist} + {dede:page/} |
typeid, row |
typeid建议指定,row控制每页数量。 |
| 指定栏目分页 | {dede:arclist} + {dede:page/} |
typeid (指定栏目ID), row |
typeid是区分不同分页区块的关键。 |
| 分页条 | {dede:page/} |
- | 自动生成,可配合CSS自定义样式。 |
通过以上方法,你就可以灵活地在 DedeCMS 首页实现各种分页需求了,如果遇到问题,请首先检查 typeid 和 row 属性是否正确设置。
