dedecms设置栏目及其当前文章选中高亮的方法
arclist标签内容页当前文档高亮效果展示
最简单的实现方法,不改动程序文件
[field:id runphp=yes]global $id,$aid;$aid = isset($id) ? $id : $aid;if(@me == $aid)@me = ' class="current"';else @me = '';[/field:id]
上面那一行标签的意思是:用 当前文档id 作为判断
如果在 dede:arclist标签里有文档的id 等于 当前文档id 就给它加 class=“current”
例子
<ul>
{dede:arclist titlelen=42 row=20}
<li[field:id runphp=yes]global $id,$aid;$aid = isset($id) ? $id : $aid;if(@me == $aid)@me = ' class="current"';else @me = '';[/field:id]>
<a href="[field:arcurl/]">[field:title/]</a>
</li>
{/dede:arclist}
</ul>
channel标签当前栏目高亮
{dede:channel type='top' currentstyle="<li class='on'><a href='~typelink~' title='~typename~'>~typename~</a></li>"}
<li><a href='[field:typelink /]' title='[field:typename/]'>[field:typename/]</a> </li>
{/dede:channel}
使channelartlist标签支持currentstyle方法
打开include\taglib\channelartlist.lib.php找到
$pv->Fields['typeurl'] = GetOneTypeUrlA($typeids[$i]);
1
在此行代码下方增加以下代码:
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}
前栏目则 li的class属性显示current,否则显示class=’’ ,也可以修改currentstyle=‘这里改为你需要的类名’。
栏目及其当前文章高亮
{dede:channelartlist typeid='19' currentstyle='on'}
<div class='{dede:field.currentstyle/}'><p>{dede:field name='typename'/}</p>
<ul>
{dede:arclist titlelen="50" row='5'}
<li[field:id runphp=yes]global $id,$aid;$aid = isset($id) ? $id : $aid;if(@me == $aid)@me = ' class="on"';else @me = '';[/field:id]>
<a href="[field:arcurl /]">[field:title /]</a>
</li>
{/dede:arclist}
</ul>
</div>
{/dede:channelartlist}