[英]How to change the menu classes in Joomla 3 default.php file to mimic custom menu classes
好的,其背景如下:1.我希望joomla菜单导航从其默认类切换到我的自定义类,并为页面活动菜单项添加标签(如有必要)
default.php文件中的默认类是这个
<ul class="nav menu<?php echo $class_sfx;?>"<?php
$tag = '';
if ($params->get('tag_id') != null)
{
$tag = $params->get('tag_id') . '';
echo ' id="' . $tag . '"';
}
?>>
<?php
foreach ($list as $i => &$item)
{
$class = 'item-' . $item->id;
if ($item->id == $active_id)
{
$class .= ' current';
}
if (in_array($item->id, $path))
{
$class .= ' active';
}
elseif ($item->type == 'alias')
{
$aliasToId = $item->params->get('aliasoptions');
if (count($path) > 0 && $aliasToId == $path[count($path) - 1])
{
$class .= ' active';
}
elseif (in_array($aliasToId, $path))
{
$class .= ' alias-parent-active';
}
}
if ($item->type == 'separator')
{
$class .= ' divider';
}
if ($item->deeper)
{
$class .= ' deeper';
}
if ($item->parent)
{
$class .= ' parent';
}
if (!empty($class))
{
$class = ' class="' . trim($class) . '"';
}
echo '<li' . $class . '>';
// Render the menu item.
switch ($item->type) :
case 'separator':
case 'url':
case 'component':
case 'heading':
require JModuleHelper::getLayoutPath('mod_menu', 'default_' . $item->type);
break;
default:
require JModuleHelper::getLayoutPath('mod_menu', 'default_url');
break;
endswitch;
// The next item is deeper.
if ($item->deeper)
{
echo '<ul class="nav-child unstyled small">';
}
elseif ($item->shallower)
{
// The next item is shallower.
echo '</li>';
echo str_repeat('</ul></li>', $item->level_diff);
}
else
{
// The next item is on the same level.
echo '</li>';
}
}
?></ul>
通过浏览器的输出是这个
<ul class="nav menu">
<li class="item-101 current active"><a href="/">Home</a></li></ul>
我想要的输出是这个...
<ul class="title-area">
<li class="name">
<h1><a href="#">My Site</a></h1>
</li>
</ul>
我的直觉会告诉我将导航更改为标题区域,但是我不确定如何将“名称”合并到li结构中。
此外,我假设标记仅适用于当前处于活动状态或当前存在的页面...也可以很好地结合...因为我的基础css结构的行高已经分配给了html的那个结构。
帮助表示赞赏。
确定测试后,我已经找到正确的答案。 现在,此解决方案已大体上适用于Joomla默认菜单系统中的任何菜单和下拉菜单结构。
我已经通过Foundation 5菜单设置完成了此解决方案(稍后,我将尝试使用其他菜单系统,但想法应该相同)。
对于菜单模块,请访问位于以下位置的default.php:/ modules / mod_menu / tmpl
默认设置具有导航菜单的类结构,如下所示:
<ul class="nav menu<?php echo $class_sfx;?>"<?php
$tag = '';
将类更改为您需要的类结构。 如果您100%绕过Joomla css(引导程序)文件结构,则可以对其进行更改...否则,您可以添加所需的类名。
这是我的变为:
<ul class="right nav menu<?php echo $class_sfx;?>"<?php
$tag = '';
现在,如果您遵循新菜单系统的类结构(Foundation),则可能需要为<li
和子菜单项(即下拉菜单)指定一个类。
***请记住,对于PHP中的Joomla菜单结构,它会拉出项目编号,如果它是当前页面,它将自动将其标记为自动(自动)...因此,除了您需要的类之外,无需在其中添加它正在添加。 编辑*添加类“ has-dropdown”应该用于父类
所以在这行(之前):
if ($item->parent)
{
$class .= ' parent';
}
更改为此(以下):
if ($item->parent)
{
$class .= ' has-dropdown parent';
}
子项也需要更改。
因此,在此行(之前):
// The next item is deeper.
if ($item->deeper)
{
echo '<ul class="nav-child unstyled small">';
}
更改为此(以下):
// The next item is deeper.
if ($item->deeper)
{
echo '<ul class="dropdown nav-child unstyled small">';
}
我认为,添加一个可以修改后端菜单设置以包含要添加或更改的<ul
和<li
菜单和子菜单子项的类的插件,将是很好的。
希望这对某人有所帮助...我稍后会再添加。
*我在使用此菜单以及使用的Foundation菜单时遇到一个错误。 第一个孩子将显示,但如果该孩子有一个子菜单项,则不会显示...所以仍然需要该修复程序。
*请记住要更改设置:将子菜单项显示为“是”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.