织梦CMS autoindex如何实现目录自动索引?

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

autoindex是织梦CMS中一个非常核心且强大的内置变量,主要用于在循环列表(如arclistlist等标签)中,为每一项内容自动生成一个序号,这个序号可以是简单的数字,也可以是更复杂的格式,如“第X条”、“共Y条”等。

织梦cms autoindex
(图片来源网络,侵删)

autoindex 的基本作用

想象一下,你有一个文章列表,想在每篇文章前面加上序号,

手动给每篇文章加数字非常麻烦,而且如果增删了文章,序号就会错乱。autoindex就是为了解决这个问题而生的,它会自动追踪当前循环到了第几条,并输出对应的序号。


autoindex 的基本用法

autoindex通常与循环标签一起使用,最常见的场景是在[field:global.autoindex/]中调用。

示例:简单的文章列表编号

arclistlist标签的循环体内,直接使用[field:global.autoindex/]

织梦cms autoindex
(图片来源网络,侵删)
{dede:arclist titlelen='30' row='5'}
    <li>
        [field:global.autoindex/]、[field:title/]
    </li>
{/dede:arclist}

输出结果:

<li>
    1、这是第一篇文章的标题
</li>
<li>
    2、这是第二篇文章的标题
</li>
<li>
    3、这是第三篇文章的标题
</li>
<li>
    4、这是第四篇文章的标题
</li>
<li>
    5、这是第五篇文章的标题
</li>

autoindex 的核心属性

autoindex的真正威力在于它的属性,可以让你对序号进行各种自定义,这些属性通常通过[field:global name='autoindex' 属性='值'/]这种方式来调用。

start - 设置起始值

用于定义序号的起始数字,默认为1。

示例:让序号从10开始

织梦cms autoindex
(图片来源网络,侵删)
{dede:arclist titlelen='30' row='5'}
    <li>
        [field:global name='autoindex' start='10'/]、[field:title/]
    </li>
{/dede:arclist}

输出结果:

<li>
    10、这是第一篇文章的标题
</li>
<li>
    11、这是第二篇文章的标题
</li>
...

type - 设置序号类型

这是最常用的属性,可以控制序号的显示格式。

  • self (默认): 纯数字,如 1, 2, 3...
  • chinese: 中文数字,如 一, 二, 三...
  • chinese1: 中文数字带“第”和“条”,如 第一条, 第二条...
  • decimal: 数字带点,如 , 2., 3...
  • lower-roman: 小写罗马数字,如 i, ii, iii...
  • upper-roman: 大写罗马数字,如 I, II, III...
  • lower-alpha: 小写字母,如 a, b, c...
  • upper-alpha: 大写字母,如 A, B, C...

示例:使用中文数字

{dede:arclist titlelen='30' row='5'}
    <li>
        [field:global name='autoindex' type='chinese1'/]、[field:title/]
    </li>
{/dede:arclist}

输出结果:

<li>
    第一条、这是第一篇文章的标题
</li>
<li>
    第二条、这是第二篇文章的标题
</li>
...

reid - 重置序号

当需要在一个页面内显示多个列表,并希望每个列表的序号都从1开始时,这个属性就非常有用,它的值是列表的id,只要不同列表的id不同,序号就会在各自列表内重新计算。

示例:两个独立的列表,都从1开始编号

<!-- 列表一 -->
<h3>最新文章</h3>
<ul>
{dede:arclist titlelen='30' row='3' id='newlist'}
    <li>
        [field:global name='autoindex'/]、[field:title/]
    </li>
{/dede:arclist}
</ul>
<!-- 列表二 -->
<h3>热门文章</h3>
<ul>
{dede:arclist titlelen='30' row='3' id='hotlist'}
    <li>
        [field:global name='autoindex'/]、[field:title/]
    </li>
{/dede:arclist}
</ul>

输出结果:

<h3>最新文章</h3>
<ul>
    <li>1、最新文章标题一</li>
    <li>2、最新文章标题二</li>
    <li>3、最新文章标题三</li>
</ul>
<h3>热门文章</h3>
<ul>
    <li>1、热门文章标题一</li>
    <li>2、热门文章标题二</li>
    <li>3、热门文章标题三</li>
</ul>

如果不使用reid(或不同的id),第二个列表会接着第一个列表继续编号(4, 5, 6...)。


高级应用与技巧

显示总条数 totalitem

有时我们想显示类似“共10条,当前第1条”这样的信息,这需要结合[field:global name='itemindex'/](当前项索引)和[field:global name='totalitem'/](总条数)来实现。

  • [field:global name='itemindex'/]: 和autoindex类似,但更侧重于“索引”,通常从0开始(除非用start属性改变)。
  • [field:global name='totalitem'/]: 获取当前循环列表的总条数。

示例:显示“共X条,第Y条”

{dede:arclist titlelen='30' row='5'}
    <li>
        共[field:global name='totalitem'/]条,第[field:global name='autoindex'/]条:[field:title/]
    </li>
{/dede:arclist}

注意totalitem需要在循环标签内使用,并且它依赖于arclistlist标签的row属性或实际查询到的结果数量。

奇偶行样式(隔行变色)

利用autoindex的奇偶性,可以轻松实现隔行变色效果。

示例:奇数行背景为白色,偶数行背景为灰色

<style>
    .list-item:nth-child(even) {
        background-color: #f0f0f0;
    }
</style>
<ul>
{dede:arclist titlelen='30' row='10'}
    <li class="list-item">
        [field:global name='autoindex'/]、[field:title/]
    </li>
{/dede:arclist}
</ul>

每隔N条添加一个分隔符或特殊样式

可以使用autoindexmod功能(通过php代码实现)来判断序号是否能被某个数整除。

示例:每3条文章后加一个横线 <hr>

{dede:arclist titlelen='30' row='10'}
    [field:title/]
    <!-- 当 (autoindex % 3 == 0) 且不是最后一条时,输出hr -->
    [field:global name='autoindex' runphp='yes']
        if(@me % 3 == 0 && @me < $GLOBALS['item_nums']) {
            @me = '<hr>';
        } else {
            @me = '';
        }
    [/field:global]
{/dede:arclist}
  • runphp='yes': 启用PHP代码执行。
  • @me: 代表当前标签的值,这里是autoindex的值。
  • $GLOBALS['item_nums']: 获取当前循环的总条数,用于判断是否是最后一条。

注意事项

  1. 作用域: autoindex 只在循环标签(如arclist, list, channelartlist等)的内部有效,在循环标签外部使用,它要么没有值,要么是全局的累加值,通常不是你想要的结果。
  2. 性能: 在极其庞大的列表(如成千上万条)中,使用复杂的runphp逻辑可能会对页面加载速度产生轻微影响,但对于常规网站,这种影响可以忽略不计。
  3. reid的重要性: 在模板中如果存在多个并列的列表,务必给它们设置不同的id属性,以确保autoindex能正确重置,避免序号错乱。

autoindex是织梦CMS模板开发中不可或缺的工具,掌握它的基本用法和核心属性(start, type, reid),可以让你非常灵活地控制列表的序号显示,从而实现各种复杂的页面布局和样式需求,从简单的数字编号到复杂的分页逻辑和样式控制,autoindex都能胜任。

-- 展开阅读全文 --
头像
LoadRunner C脚本如何高效编写与调试?
« 上一篇 2025-12-18
织梦arclist flag参数如何实现指定调用?
下一篇 » 2025-12-18

相关文章

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

目录[+]