DedeCMS中的autoindex属性是一种自增函数,用于自动为内容记录分配一个唯一的索引值,这个索引值通常是基于数据库表中记录的顺序自动生成的,通过使用autoindex,可以快速获取当前记录的索引位置,特别是在循环遍历内容记录时。
基本用法
在DedeCMS中,autoindex和itemindex都是用@me来表示计数开始,而类似@me+1则可以指定数字开始,在不同的标签中,它们的起始值是不同的:
默认起始值 | 示例代码 | |
channelartlist | 0 | {dede:global name=’itemindex’ runphp=’yes’}@me;{/dede:global} |
channelartlist | 1 | {dede:global.itemindex/} |
arclist | 1 | [field:global.autoindex/] |
channel | 0 | [field:global.autoindex/] |
如果需要改变起始值,可以通过以下方式调用:
// 从0开始 [field:global name=autoindex runphp="yes"]@me=@me1;[/field:global] // 从1开始 [field:global name=autoindex runphp="yes"]@me=@me+1;[/field:global]
扩展用法
autoindex和itemindex不仅可以用于基本的自增计数,还可以结合条件判断、自定义函数等进行复杂的逻辑操作,以下是一些常见的扩展用法示例:
1. 起始值加5开始自增计数
[field:global name=autoindex runphp="yes"]@me=@me+5;[/field:global]
2. 如果被2整除则输出竖线否则为空
[field:global name=autoindex runphp="yes"](@me%2==0)? @me="|":@me="";[/field:global]
3. 如果不等于8输出竖线否则为空,即为8的时候不打印竖线
[field:global name=autoindex runphp="yes"](@me!=8)? @me="|":@me="";[/field:global]
4. 列表每5行有带划线
[field:global runphp='yes' name=autoindex] $a="<li>"; $c="<li class='line'>"; if ((@me % 5) == 0) @me = $c; else @me = $a; [/field:global]
5. 在第5行和第10行加广告,其他行为空
[field:global runphp='yes' name=autoindex] $a="<div class='box'>"; $b="广告1"; $c="</div>"; $d="广告2"; $e=""; if (@me == 5) @me = $a.$b.$c; else if (@me == 10) @me = $a.$d.$c; else @me = $e; [/field:global]
6. 第一行样式为class="check",其他行按行数类名字后面id="life_channe1"的数字1实现自增
<li><a href="[field:typeurl/] " [field:global name='autoindex'runphp='yes']if(@me==0){@me='class="check"';}else{@me='id="life_channe'.@me.'" goto="life_channe'.@me.'"';}[/field:global]>[field:typename/]</a></li>
7. Div中id名字后面的数字从0开始自增,判断如果是第一行则加style="display:none;"属性,其他行为空
<div id="HomeCon2_1_{dede:global name=itemindex runphp='yes'}@me=@me1;{/dede:global}" class="HomeCon2_1_1" {dede:global name='itemindex' runphp='yes'}@me=(@me==1)?'':'style="display:none;"';{/dede:global} >
使用自定义函数
可以在include/extend.fun.php里添加自定义函数,然后在模板中调用。
// include/extend.fun.php function MyPosition($p){ $positionArr=array(275,330,380,435,495,547); return $positionArr[$p]; } // 模板中调用方法 {dede:channel type='son' typeid='13' row='6' noself='yes'} <div id='pdv_16795' class='pdv_class' title='' style="width:71px;height:20px;top:[field:global.autoindex function='MyPosition(@me)'/]px;left:136px; zindex:17"> <div style="FONTFAMILY: SimSun; COLOR: #fecd2e; FONTSIZE: 15px; fonweight: bold"><a style="FONTFAMILY: SimSun; COLOR: #fecd2e; FONTSIZE: 15px; fonweight: bold" href="[field:typeurl/]"target=_blank><strong>[field:typename/]</strong></a></div> </div> {/dede:channel}
FAQs
Q1: autoindex和itemindex有什么区别?
A1: autoindex和itemindex的主要区别在于它们在不同标签下的起始值不同,在channelartlist标签下,autoindex默认从0开始,而itemindex默认从1开始,它们的应用场景和扩展用法也有所不同。
Q2: 如何在DedeCMS中使用自定义函数与autoindex结合?
A2: 首先在include/extend.fun.php文件中定义自定义函数,然后在模板中调用该函数并传入autoindex的值,定义一个名为MyPosition的函数,根据传入的参数返回不同的数值,然后在模板中使用[field:global.autoindex function=’MyPosition(@me)’/]来调用该函数并传递当前的autoindex值。
序号 | 参数/选项 | 说明 |
1 | autoindex | 用于开启自动索引功能,列出目录下的所有文件和文件夹。 |
2 | depth | 用于指定索引的深度,例如depth=2 表示索引当前目录及其子目录深度为2的目录。 |
3 | files | 显示目录下的所有文件,不显示文件夹。 |
4 | folders | 显示目录下的所有文件夹,不显示文件。 |
5 | size | 显示文件的大小。 |
6 | date | 显示文件的最后修改日期。 |
7 | help | 显示自动索引的帮助信息。 |
8 | ignore | 忽略某些文件或文件夹,可以指定文件或文件夹的名称,例如ignore=*.tmp 表示忽略所有以.tmp 结尾的文件。 |
以下是一个使用dedecms autoindex
的示例:
dedecms autoindex autoindex depth=2 files size date
该命令将列出当前目录及其子目录深度为2的目录下的所有文件,显示文件的大小和最后修改日期。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1191627.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复