在制作Dedecms CMS网站模板时,我们经常需要在导航栏中调用一级和二级栏目,并让当前栏目高亮显示。然而,默认的currentstyle属性仅支持dede:channel标签,这使得我们在使用dede:channelartlist标签时无法直接实现这一功能。为了解决这个问题,我们需要对Dedecms进行一些简单的修改。


首先,打开文件include\\\\taglib\\\\channelartlist.lib.php。找到以下代码:

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

接着,在上述代码下方添加以下内容:

if($typeids[$i]['id'] == $refObj->TypeLink->TypeInfos['id'] || $typeids[$i]['id'] == $refObj->TypeLink->TypeInfos['topid']) {
    $pv->Fields['currentstyle'] = $currentstyle ? $currentstyle : 'current';
} else {
    $pv->Fields['currentstyle'] = '';
}

完成以上步骤后,channelartlist标签将完美支持currentstyle属性,从而实现自动加载当前栏目的CSS样式。


接下来是调用方法:

{dede:channelartlist typeid='2' currentstyle='current'}
  • {dede:field name='typename'/}
  • {/dede:channelartlist}

    如果当前栏目匹配,则

  • 标签的class属性会显示为“current”,否则为空。您也可以根据需要修改currentstyle的值以适应不同的类名。


    此外,还可以结合arclist标签使用,具体如下:

    {dede:channelartlist typeid='2' currentstyle='current'}
    
    {dede:field name='typename'/}
    {dede:arclist titlelen='42' row='10' currentstyle="
    ~typename~
    "} [field:array runphp='yes'] if(@me['currentstyle']){ @me = @me['currentstyle']; }else{ @me = "
    {@me['title']}
    "; } [/field:array] {/dede:arclist} {/dede:channelartlist}

    通过上述修改和调用方式,您可以轻松实现Dedecms导航栏中的一级和二级栏目高亮显示功能。这种方法不仅提高了用户体验,还增强了网站的专业性。


    希望这些技巧能帮助您更高效地开发Dedecms网站!如果您有任何疑问,请随时留言交流。