织梦autoindex如何设置从1开始计数?

99ANYc3cd6
预计阅读时长 11 分钟
位置: 首页 织梦建站 正文

一种是修改核心文件(不推荐,但最直接),另一种是使用织梦的模板标签(推荐,更安全、更灵活)。

织梦autoindex从1开始
(图片来源网络,侵删)

修改核心文件(不推荐,但直接)

这个方法会直接修改织梦的程序文件,优点是一次修改,全站生效,但缺点是,下次织梦升级时,你需要重新修改这个文件,而且如果修改错误,可能会导致网站异常。

操作步骤:

  1. 找到核心文件: 打开织梦的安装目录,找到以下文件: /include/common.func.php

  2. 定位并修改代码: 在这个文件中,找到 autoindex 函数的定义,它通常长这样:

    织梦autoindex从1开始
    (图片来源网络,侵删)
    // 全局通用函数库
    if (!function_exists('autoindex'))
    {
        function autoindex($i)
        {
            return $i;
        }
    }
  3. 修改为从1开始: 将函数体内的 return $i; 修改为 return $i + 1;

    // 修改前
    // function autoindex($i) { return $i; }
    // 修改后
    if (!function_exists('autoindex'))
    {
        function autoindex($i)
        {
            return $i + 1; // 在原索引基础上加1
        }
    }
  4. 保存文件并更新缓存: 保存修改后的 common.func.php 文件,然后登录织梦后台,点击“系统” -> “一键更新站点” -> “更新所有”,让新设置生效。

注意: 这种方法会影响所有使用 {dede:global name=autoindex/}{dede:autoindex/} 的地方,如果你只想在某个特定列表里从1开始,请使用方法二。


使用织梦模板标签(推荐,最灵活)

这是最推荐的方法,因为它不修改任何核心文件,安全、可逆,并且可以精确控制每个列表的序号是否从1开始。

织梦autoindex从1开始
(图片来源网络,侵删)

方案A:使用 {dede:global name=autoindex/} + field

这个方法适用于 dede:listdede:arclist 标签中。autoindex 是循环的内部变量,从0开始,而 @me 代表当前循环的值。

模板代码示例:

{dede:list pagesize='10'}
    <li>
        <!-- 在 autoindex 基础上加1 -->
        [field autoindex runphp='yes']@me = @me + 1;[/field]. 
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
    </li>
{/dede:list}

代码解析:

  • {dede:list}: 开始列表循环。
  • [field autoindex runphp='yes']...[/field]: 这是一个强大的用法。
    • autoindex: 获取当前循环的索引值(从0开始)。
    • runphp='yes': 启用PHP运行模式。
    • @me = @me + 1;: 在PHP代码中,@me 代表 autoindex 的当前值,这行代码的意思是,将 @me 的值加1,然后再赋值给 @me,最终输出的就是 autoindex + 1 的结果。
  • 在HTML中用作序号和标题之间的分隔符。

方案B:使用 @me 变量(更简洁的写法)

这是方案A的简化版,同样非常常用和清晰。

模板代码示例:

{dede:list pagesize='10'}
    <li>
        <!-- 使用 @me 变量进行计算 -->
        [field:global name=autoindex runphp='yes']@me = @me + 1;[/field]. 
        <a href="[field:arcurl/]">[field:title/]</a>
    </li>
{/dede:list}

代码解析:

  • [field:global name=autoindex runphp='yes']...[/field]: 这里我们直接调用全局变量 autoindex
  • @me = @me + 1;: 逻辑和方案A完全一样,获取 autoindex 的值(@me),加1后重新赋值给 @me

两种方案A和B的区别: [field autoindex][field:global name=autoindex] 在大多数情况下效果相同。global 更明确地表示它是一个全局循环变量,而 field 通常指当前文章的字段,但在这里,autoindex 是循环变量,所以两种写法都可以,选择你觉得更清晰的一种即可。


总结与对比

特性 修改核心文件 使用模板标签
安全性 ,修改核心文件,有网站崩溃风险。 ,不修改任何程序文件,只修改模板。
灵活性 ,一旦修改,全站所有 autoindex 都生效,无法单独控制。 ,可以在任意一个列表循环中独立设置,想从1开始就从1开始,想从0开始就保留默认。
可维护性 ,织梦升级后修改会丢失,需要重新修改。 ,模板修改独立,升级不受影响。
操作难度 简单,只需改一个文件。 稍微复杂一点,需要理解织梦的模板标签语法。
推荐度 不推荐,仅适用于你确定全站所有序号都需要从1开始,且不打算升级网站的情况。 强烈推荐,这是标准的、正确的织梦二次开发方式。

为了网站的安全和未来的可维护性,请务必选择方法二,在需要显示序号的模板文件中,使用 [field:global name=autoindex runphp='yes']@me = @me + 1;[/field][field autoindex runphp='yes']@me = @me + 1;[/field] 是最佳实践。

-- 展开阅读全文 --
头像
dede模板安装后显示404怎么办?
« 上一篇 昨天
dede如何调用指定栏目的content内容?
下一篇 » 昨天

相关文章

取消
微信二维码
支付宝二维码