Joomla集成Bootstrap模板菜单样式失效,求mod_menu覆盖修改方案
解决Joomla集成Bootstrap模板的菜单样式问题
没错,你找对方向了!要解决这个菜单样式问题,就是要编辑mod_menu覆盖文件里的default_url.php,下面一步步来帮你搞定:
找到覆盖文件位置:你生成的mod_menu覆盖文件应该在
templates/你的模板名称/html/mod_menu/目录下,进去找到default_url.php(主要处理带链接的菜单项,其他类型如分隔符的文件不用管)。修改
default_url.php的HTML结构:Joomla默认的mod_menu不会自动给菜单项a标签添加Bootstrap的nav-link类,这就是你的自定义样式不生效的核心原因。把原来的代码替换成下面的版本,给a标签加上Bootstrap的nav-link类,同时保留激活状态的标识:<?php defined('_JEXEC') or die; // 构建Bootstrap nav-link类,包含激活状态 $navClass = 'nav-link'; if ($item->active) { $navClass .= ' active'; } // 保留用户设置的自定义锚点CSS(如果有的话) if ($item->anchor_css) { $navClass .= ' ' . $item->anchor_css; } $title = $item->anchor_title ? 'title="' . $item->anchor_title . '" ' : ''; if ($item->menu_image) { $item->params->get('menu_text', 1) ? $linktype = '<img src="' . $item->menu_image . '" alt="' . $item->title . '" /> ' . $item->title : $linktype = '<img src="' . $item->menu_image . '" alt="' . $item->title . '" />'; } else { $linktype = $item->title; } ?> <a class="<?php echo $navClass; ?>" href="<?php echo $item->flink; ?>" <?php echo $title; ?>><?php echo $linktype; ?></a>添加自定义CSS覆盖默认样式:即使加上了
nav-link类,Joomla的默认链接样式可能还会干扰,在你的模板CSS文件里添加以下代码,匹配你预期的白色菜单效果(适配navbar-dark主题):/* 导航链接默认颜色 */ .navbar-dark .navbar-nav .nav-link { color: rgba(255,255,255,0.75); font-weight: bold; font-family: 'Titillium Web', sans-serif; } /* 鼠标悬停/聚焦时的颜色 */ .navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus { color: #ffffff; } /* 激活状态的菜单颜色 */ .navbar-dark .navbar-nav .active > .nav-link, .navbar-dark .navbar-nav .nav-link.active, .navbar-dark .navbar-nav .nav-link.show, .navbar-dark .navbar-nav .show > .nav-link { color: #ffffff; }检查
default.php(可选):如果菜单的整体结构有问题,可以打开同目录下的default.php,确保包裹菜单项的ul标签已经有nav navbar-nav mx-auto类(你的代码里已经添加了,但如果覆盖文件有修改,要保持一致)。
做完这些修改后,刷新页面就能看到菜单变成你预期的白色样式,和Bootstrap导航栏的风格完全统一了。
内容的提问来源于stack exchange,提问作者user8579885
相关产品推荐
相关产品推荐

