channelartlist标签完美支持currentstyle属性,实现自动加载当前栏目CSS样式,可以用来标识当前栏目位置的CSS,解决方法如下:

打开文件 include/taglib/channelartlist.lib.php

找到

$pv->Fields['typeurl'] = GetOneTypeUrlA($typeids[$i]);

在此行代码下方增加以下代码

//子栏目当前高亮 start
if($typeids[$i]['id'] == $refObj->TypeLink->TypeInfos['id'] || $typeids[$i]['id'] == $refObj->TypeLink->TypeInfos['reid'] || $typeids[$i]['id'] == $refObj->TypeLink->TypeInfos['topid'] || $typeids[$i]['id'] == GetTopid($refObj->TypeLink->TypeInfos['id']) )
{
    $pv->Fields['currentstyle'] = $currentstyle ? $currentstyle : 'current';
}
else
{
    $pv->Fields['currentstyle'] = '';
}
//子栏目当前高亮 start

        $pv->SetTemplet($innertext,'string');
        $artlist .= $pv->GetResult();
        $GLOBALS['itemparity'] = ($GLOBALS['itemparity']==1 ? 2 : 1);
        if($GLOBALS['itemindex']==$totalRow-1){$GLOBALS['iflast']=1;}
    }
    //注销环境变量,以防止后续调用中被使用
    $GLOBALS['envs']['typeid'] = $_sys_globals['typeid'];
    $GLOBALS['envs']['reid'] = '';
    if($cacheid !='') {
        WriteCacheBlock($cacheid, $artlist);
    }
    return $artlist;
}

调用方法

{dede:channelartlist typeid='103,8,6,4' currentstyle='current'}
    <li class='{dede:field.currentstyle/}'><a href='{dede:field name='typeurl'/}' title='{dede:field name='typename'/}'>{dede:field name='typename'/}</a></li>
{/dede:channelartlist}

PS:调用方法仅供参考,如有疑问,下方留言