织梦 channelartlist 标签 itemindex 序号判断用法详解
时间:2026-07-12 10:23:20 来源:阿里站 作者:SKY 阅读:
一、基础说明
1、channelartlist 标签作用
{dede:channelartlist} 用于循环调用多个顶级 / 父栏目及其下级栏目内容,常用于首页多栏目区块布局。
itemindex:循环索引变量,从 0 开始计数(0,1,2,3...)- 可配合织梦底层模板标签
@me+if判断语法,实现按序号差异化样式、布局
✅ 关键:
itemindex默认起始值 = 0(第一行 = 0、第二行 = 1、第三行 = 2……)
2、基础语法格式
{dede:channelartlist typeid='top' row='6'}
{dede:field.itemindex runphp='yes'}
@me = @me; // 获取当前循环序号
{/dede:field.itemindex/}
<div class="item">
<h3><a href="{dede:field.typeurl/}">{dede:field.typename/}</a></h3>
</div>
{/dede:channelartlist}
二、核心判断写法(runphp 语法)
✅ 写法原理
{dede:field.itemindex runphp='yes'}:读取当前循环索引- 通过
if判断序号,输出不同 class 或样式
示例 1:第一个栏目添加高亮样式(itemindex=0)
<pre class="language-html"><code>{dede:channelartlist typeid='top' row='6'}
{dede:field.itemindex runphp='yes'} if(@me == 0)
{ @me = "item first-item"; // 第一条样式 }else{ @me = "item"; // 默认样式 }
{/dede:field.itemindex/}<div class="[field:itemindex/]"> <h3><a href="{dede:field.typeurl/}">{dede:field.typename/}</a></h3> <p>{dede:field.description/}</p> </div> {/dede:channelartlist} <style> .item{padding:15px;border:1px solid #eee;margin-bottom:10px;} .first-item{background:#f5f7fa;border-color:#007fff;} </style>
</code></pre>
示例 2:隔行变色(奇偶行区分样式)
<pre class="language-html"><code> {dede:channelartlist typeid='top' row='6'} {dede:field.itemindex runphp='yes'} if(@me % 2 == 0){ @me = "item even"; // 偶数索引:0,2,4... }else{ @me = "item odd"; // 奇数索引:1,3,5... } {/dede:field.itemindex/} <div class="[field:itemindex/]"> <a href="{dede:field.typeurl/}">{dede:field.typename/}</a> </div> {/dede:channelartlist} <style> .item{padding:15px;} .even{background:#f8f8f8;} .odd{background:#ffffff;} </style></code></pre>
示例 3:每 3 列清除浮动 / 换行布局
<pre class="language-html"><code> {dede:channelartlist typeid='top' row='6'} {dede:field.itemindex runphp='yes'} if((@me+1) % 3 == 0){ @me = "item fl-clear"; // 第3/6/9项清除浮动 }else{ @me = "item fl"; } {/dede:field.itemindex/} <div class="[field:itemindex/]"> <a href="{dede:field.typeurl/}">{dede:field.typename/}</a> </div> {/dede:channelartlist} <style> .fl{float:left;width:33.3%;box-sizing:border-box;} .fl-clear{float:left;width:33.3%;box-sizing:border-box;clear:right;} </style></code></pre>
注意:这里用
@me+1转为从 1 开始计数,方便按行取余布局
示例 4:最后一项单独样式
<pre class="language-html"><code> {dede:channelartlist typeid='top' row='6'} {dede:field.itemindex runphp='yes'} if(@me == 5){ // row=6 索引是0~5,最后一条索引=5 @me = "item last"; }else{ @me = "item"; } {/dede:field.itemindex/} <div class="[field:itemindex/]"> <a href="{dede:field.typeurl/}">{dede:field.typename/}</a> </div> {/dede:channelartlist} </code></pre>三、关键细节 & 避坑
- 起始索引问题
itemindex默认从 0 开始,不是 1- 需要按 1 开始计数:判断时用
@me+1 - 例:第一条 =
@me == 0/@me+1 == 1
- 必须写
runphp='yes'- 否则无法执行 PHP 判断语句,直接原样输出代码
- 不要破坏外层
channelartlist标签闭合格式
- 内层子循环(arclist)和外层 itemindex 区分
channelartlist的itemindex= 栏目循环序号- 内层再套
arclist标签,要用 arclist 自己的序号字段,不要混用
- 缓存问题
- 修改模板后,后台更新全站缓存,否则样式不生效
- 版本兼容
- 适用于主流 UTF 版本织梦,旧版若异常可检查模板引擎解析设置
四、进阶写法(直接输出 HTML 内容)
<pre class="language-html"><code> {dede:channelartlist typeid='top' row='4'} {dede:field.itemindex runphp='yes'} if(@me == 0){ @me = '<div class="big-box">主栏目区块'; }else{ @me = '<div class="normal-box">普通栏目区块'; } {/dede:field.itemindex/} <h3>{dede:field.typename/}</h3> </div> {/dede:channelartlist} </code></pre>五、总结
channelartlist的itemindex= 栏目循环索引,默认从 0 开始计数- 通过
{dede:field.itemindex runphp='yes'}+ PHP if 判断实现差异化布局 - 常用场景:首栏高亮、隔行变色、栅格布局换行、最后一项清除浮动
- 修改模板后务必更新织梦缓存,保证布局正常渲染
本文配套模板、静态源码可前往艾立兹素材库alisucai.com下载
发表评论
共有0条评论