Dedecms 5.7如何实现导航菜单根据栏目自动判断并显示不同效果?

在DedeCMS 5.7中,导航菜单可以通过判断其所在栏目来自动显示效果。这通常是通过模板标签和CSS样式实现的。具体实现方式可能因网站结构和需求而异。

在dedecms 5.7版本中,实现导航菜单自动判断其所在栏目并显示效果的功能,可以通过修改模板文件和添加自定义函数来实现,以下是详细的步骤和示例代码:

Dedecms 5.7如何实现导航菜单根据栏目自动判断并显示不同效果?

修改模板文件

1、编辑head.htm文件

打开网站根目录下的/templets/default/head.htm文件。

在文件中添加如下代码:

<ul class="nav">
	<li class='nav0{dede:field name="typeid" runphp="yes" function="GetTopid(@me)"} if(@me!="6")@me=" clock_on0"; else @me="";{/dede:field}'><a href="/"></a></li>
	<li class='nav1{dede:field name="typeid" runphp="yes" function="GetTopid(@me)"} if(@me=="1")@me=" clock_on1"; else @me="";{/dede:field}'><a href="/About_us"></a></li>
	<li class='nav2{dede:field name="typeid" runphp="yes" function="GetTopid(@me)"} if(@me=="2")@me=" clock_on2"; else @me="";{/dede:field}'><a href="/News"></a></li>
	<li class='nav3{dede:field name="typeid" runphp="yes" function="GetTopid(@me)"} if(@me=="3")@me=" clock_on3"; else @me="";{/dede:field}'><a href="/Service"></a></li>
	<li class='nav4{dede:field name="typeid" runphp="yes" function="GetTopid(@me)"} if(@me=="4")@me=" clock_on4"; else @me="";{/dede:field}'><a href="/Works"></a></li>
	<li class='nav5{dede:field name="typeid" runphp="yes" function="GetTopid(@me)"} if(@me=="5")@me=" clock_on5"; else @me="";{/dede:field}'><a href="/Join"></a></li>
	<li class='nav6{dede:field name="typeid" runphp="yes" function="GetTopid(@me)"} if(@me=="6")@me=" clock_on6"; else @me="";{/dede:field}'><a href="/Contact"></a></li>
</ul>

2、添加CSS样式

在网站的CSS文件中添加以下样式:

ul.nav {
    margin: 0 auto;
    padding: 0 5px;
    width: 960px;
    height: 39px;
    backgroundimage: url(../images/nav_bg.png);
    backgroundrepeat: norepeat;
    backgroundposition: top center;
    clear: both;
}
ul.nav li {
    width: 137px;
    height: 39px;
    float: left;
}
ul.nav li a {
    display: block;
    width: 137px;
    height: 39px;
}
ul.nav li.nav0,ul.nav li.nav0 a {
    width: 138px;
}
ul.nav li.nav0 a:hover,ul.nav li.clock_on0 a {
    background: url(../images/nav_bg.png) 5px 39px norepeat;
}
ul.nav li.nav1 a:hover,ul.nav li.clock_on1 a {
    background: url(../images/nav_bg.png) 143px 39px norepeat;
}
ul.nav li.nav2 a:hover,ul.nav li.clock_on2 a {
    background: url(../images/nav_bg.png) 280px 39px norepeat;
}
ul.nav li.nav3 a:hover,ul.nav li.clock_on3 a {
    background: url(../images/nav_bg.png) 417px 39px norepeat;
}
ul.nav li.nav4 a:hover,ul.nav li.clock_on4 a {
    background: url(../images/nav_bg.png) 554px 39px norepeat;
}
ul.nav li.nav5 a:hover,ul.nav li.clock_on5 a {
    background: url(../images/nav_bg.png) 691px 39px norepeat;
}
ul.nav li.nav6 a:hover,ul.nav li.clock_on6 a {
    background: url(../images/nav_bg.png) 828px 39px norepeat;
}

编写PHP函数

1、获取顶级栏目名称

在include/common.func.php的最下方加入以下代码:

function GetTopTypename($id) {
    global $dsql;
    $row = $dsql>GetOne("SELECT typename,topid FROM jiemou_arctype WHERE id= $id");
    if ($row['topid'] == '0') {
        return $row['typename'];
    } else {
        $row1 = $dsql>GetOne("SELECT typename FROM jiemou_arctype WHERE id= $row[topid]");
        return $row1['typename'];
    }
}

2、调用当前栏目路径及名称

在需要调用当前栏目路径及名称的位置加上以下代码:

{dede:field name='typeid' function="GetTopTypename(@me)" /}

FAQs常见问题解答

问题1:如何判断当前栏目是否为顶级栏目?

答:可以使用以下方法判断当前栏目是否为顶级栏目:

if ($row['topid'] == '0') {
    // 是顶级栏目
} else {
    // 不是顶级栏目
}

问题2:如何在导航栏中高亮显示当前栏目?

Dedecms 5.7如何实现导航菜单根据栏目自动判断并显示不同效果?

答:可以在模板文件中使用以下代码来实现导航栏的高亮显示:

<li {dede:field name=typeid runphp="yes"}(@me=="")? @me=" class='current' ":@me="";{/dede:field}><a href="{dede:global.cfg_cmsurl/}/"><span>社保首页</span></a></li>

Dedecms 5.7 导航菜单自动判断所在栏目并显示效果实现方法

1. 环境准备

确保您已安装并启用了DedeCMS 5.7。

确认您的网站模板文件夹中存在templets目录,以及相应的模板文件。

2. 修改模板文件

在DedeCMS模板文件夹中,找到并打开包含导航菜单的模板文件,通常这个文件名为index.htmlindex.php

3. 获取当前栏目信息

在模板文件中,使用以下代码获取当前栏目信息:

<?php
$curPos = $arcRow['id'] ? '当前位置: <a href='/' >首页</a> > ' . GetSys catalogInfo($arcRow['id'], 0, 'title') : '当前位置: <a href='/' >首页</a>';
?>

这里$arcRow['id']是当前文章的栏目ID,GetSys catalogInfo()函数用于获取栏目信息。

4. 修改导航菜单代码

Dedecms 5.7如何实现导航菜单根据栏目自动判断并显示不同效果?

在模板文件中,找到导航菜单的代码,通常是以<div class="nav"><ul class="menu">开始的部分。

将导航菜单项的链接修改为自动判断所在栏目的形式,如下所示:

<ul class="menu">
    <?php
    $dsql>SetQuery("SELECT id,typename,linkurl FROM#@__channeltype WHERE isdefault=1 ORDER BY sortid asc");
    $dsql>Execute();
    while ($row = $dsql>GetArray()) {
        $curCat = $row['id']; // 当前栏目ID
        $curLink = $row['linkurl']; // 栏目链接地址
        $currentClass = ($row['id'] == $curCat) ? 'class="current"' : ''; // 判断当前栏目并添加class
    ?>
        <li <?php echo $currentClass; ?>><a href="<?php echo $curLink; ?>"><?php echo $row['typename']; ?></a></li>
    <?php
    }
    ?>
</ul>

5. 测试效果

保存修改后的模板文件,并在浏览器中访问您的网站,检查导航菜单是否能够根据当前栏目自动添加高亮显示效果。

6. 注意事项

确保您的导航菜单项与数据库中的栏目类型channeltype表中的ID对应。

如果您的网站使用了自定义的栏目链接地址,请确保在模板中正确引用。

如果您的网站使用了自定义模板标签,请根据实际情况调整代码。

通过以上步骤,您应该能够在DedeCMS 5.7中实现导航菜单自动判断所在栏目并显示相应的效果。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1147664.html

(0)
未希的头像未希新媒体运营
上一篇 2024-10-04 11:08
下一篇 2024-10-04 11:08

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

免费注册
电话联系

400-880-8834

产品咨询
产品咨询
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购  >>点击进入