dede自增标签的使用

99ANYc3cd6
预计阅读时长 19 分钟
位置: 首页 DEDE建站 正文

自增标签的基本语法

自增标签的基本语法非常简单,它通常嵌套在 {dede:loop}{dede:arclist} 等具有循环功能的标签内部。

dede自增标签的使用
(图片来源网络,侵删)
[field:global.autoindex/]
  • global: 表示这是一个全局变量。
  • autoindex: 是 DedeCMS 内置的变量名,代表“自动索引”,也就是从 1 开始递增的数字。

示例: 假设我们要输出一个带序号的列表:

<ul>
  {dede:loop table='dede_archives' sort='id' row='5'}
    <li>
      序号:[field:global.autoindex/] - 标题:[field:title/]
    </li>
  {/dede:loop}
</ul>

输出结果可能如下:

<ul>
  <li>序号:1 - 标题:文章标题一</li>
  <li>序号:2 - 标题:文章标题二</li>
  <li>序号:3 - 标题:文章标题三</li>
  <li>序号:4 - 标题:文章标题四</li>
  <li>序号:5 - 标题:文章标题五</li>
</ul>

自增标签的常用属性

[field:global.autoindex/] 标签本身也支持一些属性,使其功能更加强大和灵活。

runstart (起始值)

  • 作用:指定自增数字的起始值。
  • 语法[field:global.autoindex runstart='N'/]
  • 说明N 是你希望开始的数字,默认为 1。

示例: 希望序号从 10 开始。

dede自增标签的使用
(图片来源网络,侵删)
{dede:loop table='dede_archives' sort='id' row='3'}
  <li>序号:[field:global.autoindex runstart='10/] - [field:title/]</li>
{/dede:loop}

输出结果:

<li>序号:10 - 文章标题一</li>
<li>序号:11 - 文章标题二</li>
<li>序号:12 - 文章标题三</li>

style (样式)

style 属性非常实用,它可以根据当前的序号返回不同的值,实现更复杂的逻辑。

a. style='text' (默认) 直接返回数字本身,和 autoindex 效果一样。

b. style='dot' (加点) 在数字前加一个点,常用于制作无序列表的序号。

{dede:loop table='dede_archives' sort='id' row='3'}
  <li>[field:global.autoindex style='dot/'] [field:title/]</li>
{/dede:loop}

输出结果:

<li>. 文章标题一</li>
<li>. 文章标题二</li>
<li>. 文章标题三</li>

c. style='lower-roman' (小写罗马数字) 将数字转换为小写罗马数字(i, ii, iii, iv...)。

d. style='upper-roman' (大写罗马数字) 将数字转换为大写罗马数字。

e. style='lower-alpha' (小写字母) 将数字转换为小写字母(a, b, c, d...)。

f. style='upper-alpha' (大写字母) 将数字转换为大写字母。

示例: 使用大写字母作为序号。

{dede:loop table='dede_archives' sort='id' row='3'}
  <li>[field:global.autoindex style='upper-alpha/'] [field:title/]</li>
{/dede:loop}

输出结果:

<li>A 文章标题一</li>
<li>B 文章标题二</li>
<li>C 文章标题三</li>

自增标签的实际应用场景

自增标签在实际模板制作中非常常见,以下是几个典型的应用。

制作带序号的列表

这是最基本的应用,如前面所示。

<ol>
  {dede:arclist row='5' titlelen='30'}
    <li>[field:global.autoindex/]. [field:title/]</li>
  {/dede:arclist}
</ol>

实现隔行换色效果

通过判断 autoindex 的奇偶性,给 litr 元素添加不同的 CSS 类名。

<ul>
  {dede:arclist row='5' titlelen='30'}
    <li class="[field:global.autoindex function="(@me % 2 == 0) ? 'even' : 'odd';" /]">
      [field:title/]
    </li>
  {/dede:arclist}
</ul>

代码解释:

  • function="(@me % 2 == 0) ? 'even' : 'odd';" 是一个 PHP 函数。
  • @me 代表 autoindex 当前的值。
  • % 2 是取模运算,判断是否能被 2 整除。
  • ? 'even' : 'odd' 是三元运算符。@me % 2 == 0 成立(即偶数),则返回 'even',否则返回 'odd'
  • 这样,第 2、4、6... 条目会拥有 class="even",第 1、3、5... 条目会拥有 class="odd"

然后在 CSS 中定义样式:

li.odd { background-color: #f9f9f9; }
li.even { background-color: #ffffff; }

为分页生成页码

在分页模板(通常是 list_paget.htm)中,[field:global.autoindex/] 代表当前页码。

<div class="dede_pages">
  <ul>
    <li><a href="javascript:;" class="prev">上一页</a></li>
    {dede:pagelist listsize='4' listitem='info,index,next,end'}
      <li><a href="[field:link/]">[field:global.autoindex/]</a></li>
    {/dede:pagelist}
    <li><a href="javascript:;" class="next">下一页</a></li>
  </ul>
</div>

注意:在这个场景下,[field:global.autoindex/] 是由 {dede:pagelist} 标签控制的,它代表的是分页列表中每一项的序号,而不是文章的 ID。

制作多列布局

利用 autoindex 来控制列的显示,例如每 3 个项目换一行。

<div class="row">
  {dede:arclist row='9' titlelen='20'}
    [field:global.autoindex runstart='1'/]
    <!-- 判断是否是第3的倍数,如果是则换行 -->
    [field:global.autoindex function="(@me % 3 == 0) ? '</div><div class="row">' : '';" /]
    <div class="col">
      <h3>[field:title/]</h3>
    </div>
  {/dede:arclist}
</div>

代码解释:

  • runstart='1' 确保从 1 开始计算。
  • function="(@me % 3 == 0) ? '</div><div class="row">' : '';" 同样是利用取模运算。
  • 当序号是 3、6、9... 时,会输出 </div><div class="row">,从而实现每 3 个 col 元素后关闭并重新开启一个 row 容器。

注意事项

  1. 必须嵌套在循环标签内[field:global.autoindex/] 本身没有循环能力,它必须被 {dede:loop}{dede:arclist}{dede:channelartlist} 等循环标签包裹才能生效。
  2. 作用域autoindex 的计数范围仅限于它所在的那个循环标签内部,如果有多层嵌套循环,每一层都有自己独立的 autoindex 计数器。
  3. 性能:对于简单的奇偶判断或样式转换,使用 function 属性是方便的,但如果逻辑非常复杂,可能会对页面加载速度有轻微影响,对于绝大多数情况,这都不是问题。
功能 标签写法 说明
基本自增 [field:global.autoindex/] 从 1 开始递增,输出 1, 2, 3...
指定起始值 [field:global.autoindex runstart='10'/] 从 10 开始递增,输出 10, 11, 12...
加点序号 [field:global.autoindex style='dot'/] 输出 .1, .2, .3...
小写字母 [field:global.autoindex style='lower-alpha'/] 输出 a, b, c...
大写字母 [field:global.autoindex style='upper-alpha'/] 输出 A, B, C...
奇偶判断 [field:global.autoindex function='(@me%2==0)?"even":"odd";'/] 用于隔行换色等场景。

掌握 autoindex 标签是 DedeCMS 模板开发的基础,希望这份详细的讲解能帮助你更好地使用它。

-- 展开阅读全文 --
头像
C语言中setcolor函数如何使用?
« 上一篇 03-02
C语言UDPsocket如何实现通信?
下一篇 » 03-02

相关文章

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

目录[+]