您想让新添加的栏目从1开始,覆盖旧的ID
这种情况通常发生在您清空了所有栏目,希望新建立的栏目ID从1、2、3...重新排列,而不是接着之前的ID继续(比如从100开始)。

核心原理: DedeCMS的栏目ID是主键,自增的,您无法直接修改数据库让它“重置”自增ID,您可以清空栏目数据表,并重置其自增ID的起始值,这样再添加新栏目时,ID就会从1开始了。
⚠️ 重要警告: 此操作会永久删除您网站上的所有栏目及其所有子栏目、文章、图集等所有关联数据!请务必提前备份您的数据库!
操作步骤 (通过phpMyAdmin等数据库管理工具):
- 备份数据库: 这是最重要的一步,防止误操作导致数据丢失。
- 登录phpMyAdmin: 找到您DedeCMS所在数据库。
- 找到栏目表: DedeCMS的栏目数据表通常名为
#@_arctype(#@_是您在配置文件中定义的前缀,默认是dede_)。 - 清空表数据:
- 在
#@_arctype表上点击“清空”(Empty)按钮,这会删除所有行,但保留表结构。
- 在
- 重置自增ID:
- 在
#@_arctype表上,点击“操作”(Operations)选项卡。 - 在“表选项”(Table options)中,找到“自增”(AUTO_INCREMENT)。
- 在输入框中填入
1。 - 点击“执行”(Go)。
- 在
完成以上步骤后, 您再去DedeCMS后台添加新栏目,第一个栏目的ID就会是 1,第二个是 2,以此类推。

您想在模板调用时,让栏目的显示序号从1开始
这种情况更常见,您的栏目ID可能是 5, 6, 7,但在页面上显示时,您希望它们是 1, 2, 3,这通常用于循环列表,栏目一”、“栏目二”。
核心原理: 在DedeCMS的模板标签中,使用 {/dede:channel} 或 {dede:channelartlist} 等循环标签时,系统会自动提供一个变量 @me 或 field.global.autoindex 来记录当前的循环次数,这个变量默认就是从 0 开始的,我们只需要将它加 1 即可。
解决方案:
在您的模板文件(通常是 templets/default/ 目录下的文件)中,找到调用栏目的代码,进行如下修改:

对于 {dede:channel}
这是最常用的调用一级栏目的标签。
原始代码 (序号从0开始):
{dede:channel type='top' row='8'}
<li>
<a href="[field:typelink/]">[field:typename/]</a>
<!-- 这里的 {/dede:channel} 会循环8次 -->
</li>
{/dede:channel}
修改后代码 (序号从1开始):
使用 field.global.autoindex + 1。
{dede:channel type='top' row='8'}
<li>
<!-- 显示序号,1, 2, 3... -->
<span>栏目[field:global.autoindex/]</span>
<a href="[field:typelink/]">[field:typename/]</a>
</li>
{/dede:channel}
注意: field.global.autoindex 是在 {dede:channel} 标签内部可用的全局变量,它从 0 开始计数。
对于 {dede:channelartlist}
这个标签用于调用顶级栏目及其子栏目。
原始代码:
{dede:channelartlist row='4'}
<div class="channel-item">
<h2><a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a></h2>
{dede:channel type='son' noself='yes'}
<a href="[field:typelink/]">[field:typename/]</a>
{/dede:channel}
</div>
{/dede:channelartlist}
修改后代码 (让顶级栏目的序号从1开始):
顶级栏目的序号使用 field.global.autoindex + 1。
{dede:channelartlist row='4'}
<div class="channel-item">
<!-- 顶级栏目序号,1, 2, 3, 4 -->
<h2><span>栏目[field:global.autoindex/]</span><a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a></h2>
<!-- 子栏目循环,序号也从1开始 -->
{dede:channel type='son' noself='yes'}
<a href="[field:typelink/]">[field:typename/]</a>
{/dede:channel}
</div>
{/dede:channelartlist}
修改后代码 (让子栏目的序号从1开始):
子栏目循环 {dede:channel} 内部,同样使用 field.global.autoindex + 1。
{dede:channelartlist row='4'}
<div class="channel-item">
<h2><a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a></h2>
<ul>
{dede:channel type='son' noself='yes'}
<li>
<!-- 子栏目序号,1, 2, 3... -->
<span>子栏目[field:global.autoindex/]</span>
<a href="[field:typelink/]">[field:typename/]</a>
</li>
{/dede:channel}
</ul>
</div>
{/dede:channelartlist}
- 想重置数据库ID本身: 需要清空
#@_arctype 表并重置自增ID(危险操作,务必备份)。
- 想在页面上显示序号从1开始: 这是最常见的需求,直接在模板中使用
{field:global.autoindex/} 或 [@me + 1] 即可轻松实现,无需修改数据库。
根据您的实际需求选择对应的解决方案即可,希望这能帮到您!
这是最常用的调用一级栏目的标签。
原始代码 (序号从0开始):
{dede:channel type='top' row='8'}
<li>
<a href="[field:typelink/]">[field:typename/]</a>
<!-- 这里的 {/dede:channel} 会循环8次 -->
</li>
{/dede:channel}
修改后代码 (序号从1开始):
使用 field.global.autoindex + 1。
{dede:channel type='top' row='8'}
<li>
<!-- 显示序号,1, 2, 3... -->
<span>栏目[field:global.autoindex/]</span>
<a href="[field:typelink/]">[field:typename/]</a>
</li>
{/dede:channel}
注意: field.global.autoindex 是在 {dede:channel} 标签内部可用的全局变量,它从 0 开始计数。
对于 {dede:channelartlist}
这个标签用于调用顶级栏目及其子栏目。
原始代码:
{dede:channelartlist row='4'}
<div class="channel-item">
<h2><a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a></h2>
{dede:channel type='son' noself='yes'}
<a href="[field:typelink/]">[field:typename/]</a>
{/dede:channel}
</div>
{/dede:channelartlist}
修改后代码 (让顶级栏目的序号从1开始):
顶级栏目的序号使用 field.global.autoindex + 1。
{dede:channelartlist row='4'}
<div class="channel-item">
<!-- 顶级栏目序号,1, 2, 3, 4 -->
<h2><span>栏目[field:global.autoindex/]</span><a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a></h2>
<!-- 子栏目循环,序号也从1开始 -->
{dede:channel type='son' noself='yes'}
<a href="[field:typelink/]">[field:typename/]</a>
{/dede:channel}
</div>
{/dede:channelartlist}
修改后代码 (让子栏目的序号从1开始):
子栏目循环 {dede:channel} 内部,同样使用 field.global.autoindex + 1。
{dede:channelartlist row='4'}
<div class="channel-item">
<h2><a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a></h2>
<ul>
{dede:channel type='son' noself='yes'}
<li>
<!-- 子栏目序号,1, 2, 3... -->
<span>子栏目[field:global.autoindex/]</span>
<a href="[field:typelink/]">[field:typename/]</a>
</li>
{/dede:channel}
</ul>
</div>
{/dede:channelartlist}
- 想重置数据库ID本身: 需要清空
#@_arctype 表并重置自增ID(危险操作,务必备份)。
- 想在页面上显示序号从1开始: 这是最常见的需求,直接在模板中使用
{field:global.autoindex/} 或 [@me + 1] 即可轻松实现,无需修改数据库。
根据您的实际需求选择对应的解决方案即可,希望这能帮到您!
这个标签用于调用顶级栏目及其子栏目。
原始代码:
{dede:channelartlist row='4'}
<div class="channel-item">
<h2><a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a></h2>
{dede:channel type='son' noself='yes'}
<a href="[field:typelink/]">[field:typename/]</a>
{/dede:channel}
</div>
{/dede:channelartlist}
修改后代码 (让顶级栏目的序号从1开始):
顶级栏目的序号使用 field.global.autoindex + 1。
{dede:channelartlist row='4'}
<div class="channel-item">
<!-- 顶级栏目序号,1, 2, 3, 4 -->
<h2><span>栏目[field:global.autoindex/]</span><a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a></h2>
<!-- 子栏目循环,序号也从1开始 -->
{dede:channel type='son' noself='yes'}
<a href="[field:typelink/]">[field:typename/]</a>
{/dede:channel}
</div>
{/dede:channelartlist}
修改后代码 (让子栏目的序号从1开始):
子栏目循环 {dede:channel} 内部,同样使用 field.global.autoindex + 1。
{dede:channelartlist row='4'}
<div class="channel-item">
<h2><a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a></h2>
<ul>
{dede:channel type='son' noself='yes'}
<li>
<!-- 子栏目序号,1, 2, 3... -->
<span>子栏目[field:global.autoindex/]</span>
<a href="[field:typelink/]">[field:typename/]</a>
</li>
{/dede:channel}
</ul>
</div>
{/dede:channelartlist}
- 想重置数据库ID本身: 需要清空
#@_arctype表并重置自增ID(危险操作,务必备份)。 - 想在页面上显示序号从1开始: 这是最常见的需求,直接在模板中使用
{field:global.autoindex/}或[@me + 1]即可轻松实现,无需修改数据库。
根据您的实际需求选择对应的解决方案即可,希望这能帮到您!
