我正在开发一个以 Gantry 为基础的新模板,并且需要以处理手机的方式构建菜单。我遇到的问题是我修改了 mod_menu 中的 default.php 文件以复制移动设置的菜单的方式也复制了站点中的其他菜单,即。页脚菜单。
有没有一种方法可以在不弄乱页脚菜单的情况下构建主菜单以使其对移动设备友好?
这是我正在处理的工作示例的链接。请注意,当您缩小到手机大小时,页脚菜单的作用与主菜单相同。
http://www.mniac.com/spymaniac30/
<nav class="main <?php echo $class_sfx; ?>"<?php
$tag = '';
if ($params->get('tag_id') != null)
{
$tag = $params->get('tag_id') . '';
echo ' id="' . $tag . '"';
}
?> role="navigation">
<ul>
<?php if ($class_sfx === 'nav-list') : ?>
<li></li>
<li class="nav-header"><?php echo $module->title; ?></li>
<?php endif; ?>
<?php
$previous_parent = null;
foreach ($list as $i => &$item) :
$class = '';
if ($item->id == $active_id)
{
$class .= 'current ';
}
if ($item->type == 'alias' &&
in_array($item->params->get('aliasoptions'), $path)
|| in_array($item->id, $path))
{
$class .= 'active ';
}
if ($item->deeper)
{
$class .= 'deeper ';
}
if ($item->parent)
{
$class .= 'parent dropdown ';
$previous_parent = $item->id;
$item->flink = "#";
}
if (!empty($class))
{
$class = ' class="' . trim($class) . '"';
}
echo '<li id="item-' . $item->id . '"' . $class . '>';
// Render the menu item.
switch ($item->type) :
case 'separator':
case 'url':
case 'component':
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="jb-nav dropdown-menu" role="menu" aria-labelledby="drop' . $previous_parent . '">';
}
// The next item is shallower.
else if ($item->shallower)
{
echo '</li>';
echo str_repeat('</ul></li>', $item->level_diff);
}
// The next item is on the same level.
else
{
echo '</li>';
}
endforeach;
?>
</ul>
</nav>
<nav class="mobile <?php echo $class_sfx; ?>"<?php
$tag = '';
if ($params->get('tag_id') != null)
{
$tag = $params->get('tag_id') . '';
echo ' id="' . $tag . '"';
}
?> role="navigation">
<div id="menu-link"><a href="#">MENU</a></div>
<ul style="display:none;">
<?php if ($class_sfx === 'nav-list') : ?>
<li></li>
<li class="nav-header"><?php echo $module->title; ?></li>
<?php endif; ?>
<?php
$previous_parent = null;
foreach ($list as $i => &$item) :
$class = '';
if ($item->id == $active_id)
{
$class .= 'current ';
}
if ($item->type == 'alias' &&
in_array($item->params->get('aliasoptions'), $path)
|| in_array($item->id, $path))
{
$class .= 'active ';
}
if ($item->deeper)
{
$class .= 'deeper ';
}
if ($item->parent)
{
$class .= 'parent dropdown ';
$previous_parent = $item->id;
$item->flink = "#";
}
if (!empty($class))
{
$class = ' class="' . trim($class) . '"';
}
echo '<li id="item-' . $item->id . '"' . $class . '>';
// Render the menu item.
switch ($item->type) :
case 'separator':
case 'url':
case 'component':
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="jb-nav dropdown-menu" role="menu" aria-labelledby="drop' . $previous_parent . '">';
}
// The next item is shallower.
else if ($item->shallower)
{
echo '</li>';
echo str_repeat('</ul></li>', $item->level_diff);
}
// The next item is on the same level.
else
{
echo '</li>';
}
endforeach;
?>
</ul>
</nav>
谢谢大家