这篇是基于dedehtml大佬一篇文章 https://www.dedehtml.com/notes/get-type-infos.html 为了不误会其中的获取顶级栏目信息是我写的,特意标注是转载
写织梦模板的时候可能会有的页面设计写的有个性些,在菜单上不太调用全部栏目,所以顶级栏目高亮这块还是要换下思路。
比如我现在有个页面。菜单是
首页---新闻---媒体---产品---招聘---关于
其中新闻和产品这两个菜单的样式写得不一样,有下拉菜单,而且结构样式都不同。。
所以我就换个方法,直接把简单粗暴把菜单写上去,然后在需要添加高亮样式的地方加入下方判断 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>
然后把菜单导航写成 模板页,在需要的地方调用