dedecms当前栏目增加样式currentstyle

2024年10月28日 建站教程

有两种方法,比较传统的方法是:
{dede:channel type='self' currentstyle="<li class='thisclass'><a href='~typelink~'><span>~typename~</span></a></li>"}
<li><a href='[field:typeurl/]'><span>[field:typename/]</span></a></li>
{/dede:channel}
该标签局限性比较大,首先要注意currentstyle属性里的双引号需要全部换成单引号,否则执行会出错;
该标签在不修改模板的情况下只能在channel里边用;
再有,自己定义的标签在currentstyle里是无法显示的,比如[field:seotitle/]在currentstyle应该写成“~seotitle~”,但因为channel并不支持seotitle这个属性,所以该语句并不能实现。
另一种方法是用channelartlist,但需要先修改模板,首先需要打开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'] = '';
}
加好了之后,使用方法是:
{dede:channelartlist typeid='2' currentstyle='current'}
<li class='{dede:field.currentstyle/}'><a href='{dede:field name='typeurl'/}'>{dede:field name='typename'/}</a></li>
。。。
{/dede:channelartlist}
这种方法的好处是不用加“~typename~”之类的标签,可以直接套用channelartlist的标签;
上边的代码中,class=’{dede:field.currentstyle/}’在非当前栏目的情况下,会输出为:class=”“,在当前栏目下会输出为:class=”current”,然后就可以在current中添加样式了,如果想要把这个clss换一个名字,如想改成test,需要把“{dede:channelartlist typeid=’2’ currentstyle=’current’}”改成“{dede:channelartlist typeid=’2’ currentstyle=test}”,同时,模板中的 ‘current’也需要改成’test’。

本文链接:http://so.lmcjl.com/news/16403/

展开阅读全文
相关内容