写织梦模板的时候可能会有的页面设计写的有个性些,在菜单上不太调用全部栏目,所以顶级栏目高亮这块还是要换下思路。
比如我现在有个页面。菜单是
首页---新闻---媒体---产品---招聘---关于
其中新闻和产品这两个菜单的样式写得不一样,有下拉菜单,而且结构样式都不同。。
所以我就换个方法,直接把简单粗暴把菜单写上去,然后在需要添加高亮样式的地方加入下方判断 cur为高亮样式。
首先修改/include/helpers/extend.helper.php 在最下方添加以下代码让它支持调用顶级栏目的信息
/* 获取顶级栏目相关信息 * * @access public * @param string $tid 栏目id * @param string $field栏目字段 * @return string */ if ( ! function_exists('getToptype')) { function getToptype($tid,$field) { global $dsql,$cfg_Cs; if(!is_array($cfg_Cs)) { require_once(DEDEDATA."/cache/inc_catalog_base.inc"); } if(!isset($cfg_Cs[$tid][0]) || $cfg_Cs[$tid][0]==0) { $topid = $tid; } else { $topid = GetTopid($cfg_Cs[$tid][0]); } $row = $dsql->GetOne("SELECT * FROM `dede_arctype` WHERE id=$topid"); if($field=='id') return $topid; if($field=='typename') return $row['typename'];//栏目名称 if($field=='typeurl') return GetOneTypeUrlA($row);//栏目链接 if($field=='typenamedir') return $row['typenamedir'];//栏目英文名称 if($field=='seotitle') return $row['seotitle'];//栏目SEO标题 if($field=='description') return $row['description'];//栏目描述 if($field=='content') return $row['content'];//栏目内容 } }
判断当前栏目的顶级栏目ID是否为2,如果是则输出class=“cur”,否则为空
{dede:field.typeid function="gettoptype(@me,id)" runphp='yes'}if(@me==2) @me='class="cur"'; else @me='';{/dede:field.typeid}
使用示例
<li {dede:field.typeid function="gettoptype(@me,id)" runphp='yes'}if(@me==0) @me='class="cur"'; else @me='';{/dede:field.typeid}>首页</li> <li {dede:field.typeid function="gettoptype(@me,id)" runphp='yes'}if(@me==1) @me='class="cur"'; else @me='';{/dede:field.typeid}> <div>新闻</div> <div> <li>下拉菜单</li> <li>下拉菜单</li> <li>下拉菜单</li> <li>下拉菜单</li> <li>下拉菜单</li> </div> <div> 其他信息 </div> </li> <li{dede:field.typeid function="gettoptype(@me,id)" runphp='yes'}if(@me==3) @me='class="cur"'; else @me='';{/dede:field.typeid}>媒体</li> <li {dede:field.typeid function="gettoptype(@me,id)" runphp='yes'}if(@me==4) @me='class="cur"'; else @me='';{/dede:field.typeid}> <div>新闻</div> <div> <li>下拉菜单</li> <li>下拉菜单</li> <li>下拉菜单</li> </div> <div> 其他信息 </div> <div> 其他信息 </div> </li> <li{dede:field.typeid function="gettoptype(@me,id)" runphp='yes'}if(@me==5) @me='class="cur"'; else @me='';{/dede:field.typeid}>招聘</li> <li{dede:field.typeid function="gettoptype(@me,id)" runphp='yes'}if(@me==6) @me='class="cur"'; else @me='';{/dede:field.typeid}>关于</li>
然后把菜单导航写成 模板页,在需要的地方调用