在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:如何在导航栏中高亮显示当前栏目?
答:可以在模板文件中使用以下代码来实现导航栏的高亮显示:
<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.html
或index.php
。
3. 获取当前栏目信息
在模板文件中,使用以下代码获取当前栏目信息:
<?php $curPos = $arcRow['id'] ? '当前位置: <a href='/' >首页</a> > ' . GetSys catalogInfo($arcRow['id'], 0, 'title') : '当前位置: <a href='/' >首页</a>'; ?>
这里$arcRow['id']
是当前文章的栏目ID,GetSys catalogInfo()
函数用于获取栏目信息。
4. 修改导航菜单代码
在模板文件中,找到导航菜单的代码,通常是以<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
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复