各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案

Str Tom,为分享PHP技术和解决方案,贡献一份自己的力量!
收藏本站(不迷路),每天更新好文章!
当前位置:首页 > CMS教程 > phpcms

phpcms 完美实现 导航栏当前栏目高亮

管理员 2022-08-28
phpcms
266
我们在做网站的时候,经常碰到导航栏高亮功能,或者侧栏高亮,这个会涉及到几个问题:
1.栏目列表页子栏目高亮判断,如果当前页面为子栏目,他的顶级栏目如果在导航栏也要高亮。
2.内容页高亮,这个phpcms一般没有问题。
3.单页高亮判断。
主要问题就在这里,一般我们直接用$top_parentid参数来判断就可以。但是由于phpcms的设计问题,单页没有$top_parentid参数,如果单页为多级单页,那么这个办法就行不通了。
如何解决?
其实也比较简单,就是多加几个判断,由于单页有个$parentid参数,那么我们就可以以此来判断。
以下为参考代码:
导航栏带子导航菜单并且高亮
        <ul class="nav clearfix">
                <li class="m {if !$catid} on{/if}" ><h3><a href="{siteurl($siteid)}"  title="网站首页">网站首页</a></h3></li>
                {pc:content action="category" catid="0" num="25" siteid="$siteid" order="listorder ASC"}
                {loop $data $k $v}
                <li class="s">|</li>
                <li class="m {if $top_parentid == $v[catid]||$catid==$v[catid]||$parentid==$v[catid]} on{/if}">
                <h3><a href="{$v[url]}"title="{$v[catname]}">{$v[catname]}</a></h3>
                {if $v[child]==1}
                {pc:content action="category" catid="$k" num="10" siteid="$siteid" order="listorder ASC"}
                <ul class="sub">
                {loop $data $r}
                <li> <a href="{$r[url]}" title="{$r[catname]}">{$r[catname]}</a></li>
                {/loop}
                </ul>
                {/pc}
                {/if}      
                </li>
                {/loop}
                {/pc}
            <li class="block" style=""></li>
            </ul>

当然这个属于普遍通用的,对于特殊情况可能仍有一些bug,比如单页为3级以上的,那么这个可能失效了,但是对于一般的网站够用了,而且这个的好处是不用修改phpcms的程序了。


补充

一下是通过修改程序来彻底修改这个问题的方法:


phpcms默认单网页栏目是没有$top_parentid变量的,只有$parentid,这个可能是在设计的时候没有考虑到,而我们在使用的时候是很需要这个变量的,比如当前栏目高亮时,如果是单页,就有问题了,我们分析了一下,其实没必要在单页栏目就不要这个变量了,算是个bug,但官方迟迟不更新,在这里我们自己动手解决一下。
一共修改2个文件,共2处,位置代码相似。
/phpcms/modules/content/class/html.class.php
/phpcms/modules/content/index.php
}else{
  //单网页
  ……
  $parentid = $CATEGORYS[$catid]['parentid'];
  ……
  $SEO = seo($siteid, 0, $title,$setting['meta_description'],$keywords);
  ……
//此处加入
}

//此处加入 后加入
            //最顶级栏目ID
            $arrparentid = explode(',', $CAT['arrparentid']);
            $top_parentid = $arrparentid[1] ? $arrparentid[1] : $catid;

完,问题解决!
----------------------------分割线-----------------------------------
另外,那个$SEO = seo($siteid, 0, $title,$setting['meta_description'],$keywords);其实也是有bug的,就是单页的关键字和简介在后台添加不管用。
解决办法:
将上面代码替换为:
$SEO = seo($siteid, $catid, $title,$setting['meta_description'],$keywords);

相关推荐

扫码关注

qrcode

QQ交谈

回顶部