0

我正在开发一个以 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>

谢谢大家

4

1 回答 1

1

你不必编辑你的核心文件,如果可以的话,总是避免,原因很明显^^

只需在“移动位置”添加另一个菜单模块,因此如果屏幕宽度超过 X 则应隐藏它并在下方显示。

或者因为它已经启动:一个模块用于顶部菜单,一个模块用于页脚

所以你最终会在模块管理器中复制模块而不是更改代码......

就那么简单

于 2013-04-26T18:55:41.430 回答