用currentstyle为当前栏目增加一些样式

  有两种方法,比较传统的方法是:

{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’。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值