在Dedecms中,{dede:arclist/}标签中的[field:global.autoindex/]是一个非常实用的功能。它从0开始自增,用于标识循环列表中的每一项。然而,如果我们希望自定义起始值,比如从2开始,可以通过以下代码实现。

[field:autoindex runphp='yes']@me=$GLOBALS['autoindex']+2;[/field:autoindex]
说明:这里的“+2”表示从2开始,如果需要从其他数字开始,只需调整加号后的数值即可。例如,“-1”则表示从-1开始。
注意:此代码必须放置在循环列表的开始与结束之间才能生效。

除了{dede:arclist/}标签,许多用户也希望{dede:sql/}标签能够具备类似的自动递增功能。实际上,通过简单的修改,我们可以为{dede:sql/}标签添加这一特性。官方鼓励用户分享使用技巧和开发经验,因此这种扩展并不复杂。
接下来,我们将详细介绍如何实现这一功能。首先,找到Dedecms V5.3版本中标签文件所在的目录:/include/taglib 文件夹。我们需要修改的是{dede:sql/}标签对应的 sql.lib.php 文件。
打开 sql.lib.php 文件后,定位到第34行,即代码:

$ctp->LoadSource($Innertext);
在其下方添加以下代码:

$GLOBALS['autoindex'] = 0;
这段代码的作用是定义一个全局变量,并将其初始值设置为0。接下来,修改 while 循环部分的代码,如下所示:

while($row = $dsql->GetArray($thisrs))
{
    $sqlCt++;
    foreach($ctp->CTags as $tagid=>$ctag)
    {
        if(!empty($row[$ctag->GetName()]))
        { 
            $ctp->Assign($tagid,$row[$ctag->GetName()]);
        }
    }
    $GLOBALS['autoindex']++; // 每循环一次加上一个1然后解析出来
    $revalue .= $ctp->GetResult();
}
完成上述修改后,[field:global.autoindex/] 标签就可以在 {dede:sql/} 中使用了。以下是一个示例:

{dede:sql sql='select * from dede_archives'}
[field:global.autoindex/]-[field:title/]
{/dede:sql}
通过以上步骤,我们成功为 {dede:sql/} 标签添加了自动递增功能。这种方法简单易行,适用于各种场景。当然,Dedecms 的扩展性远不止于此,用户可以根据需求进一步探索和开发更多功能。