好的背景如下: 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>
我粗野的直觉会告诉我将导航改为标题区但我不确定如何合并&#34; name&#34;进入李结构。
此外,我假设标签仅用于当前活动或存在的页面...这也很好合并...因为我的基础css结构已经分配了行高度html的结构。
帮助表示赞赏。
答案 0 :(得分:0)
测试后确定我找到了正确的答案。现在这个解决方案通常适用于Joomla默认菜单系统中的任何菜单和下拉菜单结构。
我已经使用Foundation 5菜单设置完成了这个解决方案(稍后我将尝试不同的菜单系统,但想法应该是相同的)。
对于菜单模块,请转到位于此处的default.php:/ modules / mod_menu / tmpl
默认设置具有导航菜单的类结构:
<ul class="nav menu<?php echo $class_sfx;?>"<?php
$tag = '';
将类更改为您需要的类结构。如果您100%绕过Joomla css(bootstrap)文件结构,那么您可以更改它......或者如果不是,您只需添加所需的类名。
这是我的改变:
<ul class="right nav menu<?php echo $class_sfx;?>"<?php
$tag = '';
现在,如果您正在关注新菜单系统的类结构(基础),则可能需要为<li
和子菜单项指定一个类,即下拉菜单。
***请记住,对于Joomla在PHP中的菜单结构,它会提取项目编号,如果它是当前页面,它会自动将其标记为自动(自动)...所以不需要添加它,除了你要添加的课程。编辑*添加类“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
菜单和子菜单子项的插件。
希望这对某人有帮助......我稍后会添加更多内容。
*我有一个错误,我正在使用这个和我正在使用的基础菜单。第一个孩子将显示,但如果那个孩子有一个子菜单项,它将不会显示...所以仍然需要修复。
*记得更改设置:将子菜单项显示为“是”