【问题标题】:Dynamic navigation in php with sub-menus without databasephp中的动态导航,带有没有数据库的子菜单
【发布时间】:2012-12-10 17:13:42
【问题描述】:

使用此处规定的方法/答案:dynamic navigation in php

我想添加一些页面链接作为子菜单。

我已经解决了这个问题(来自上一个已回答的问题)

<?php
$pages = array(
    'index.php' => 'Home',
    'about.php' => 'About',
    'contact.php' => 'Contact',
    'faq.php' => 'FAQ',
    'tutorials.php' => 'Tutorials',
) ;

$currentPage = basename($_SERVER['REQUEST_URI']) ;

?>

<div id="menu">
    <ul id="menuList">
        <?php foreach ($pages as $filename => $pageTitle) { 
            if ($filename == $currentPage) { ?>
        <li class="current"><?php echo $pageTitle ; ?></li>
            <?php } else { ?>
        <li><a href="<?php echo $filename ; ?>"><?php echo $pageTitle ; ?></a></li>
            <?php
            } //if 
         } //foreach 
            ?>
    </ul>
</div>

我想做的是能够将子菜单项添加到“关于”菜单项或“常见问题解答”菜单中。

我在狩猎和啄食的 php 部分中迷路了,直到某些东西起作用。 :)

当然,因为它最多只有 10 页的网站,我可以简单地在每个页面中都有菜单代码。但那会是一种什么样的学习实验呢? :)

在此先感谢您对这位“设计师-想成为编码者”的任何见解

ps。非常感谢Fanis 提供上面的代码

【问题讨论】:

  • 您能更具体地说明您的要求吗?您只是在理解 PHP 方面需要帮助吗?

标签: php drop-down-menu navigation


【解决方案1】:

[SPAGUETTI 代码警报]

你可以试试这个,

<?php
$pages = array(
    'index.php' => 'Home',
    'about.php' => array('pageTitle' => 'About', 'subpages' => array(
        'about1.php' => 'About subpage #1',
        'about2.php' => 'About subpage #2',
        'about3.php' => 'About subpage #3')),        
    'contact.php' => 'Contact',
    'faq.php' => 'FAQ',
    'tutorials.php' => 'Tutorials',
) ;

$currentPage = basename($_SERVER['REQUEST_URI']) ;

?>

<div id="menu">
    <ul id="menuList">
    <?php foreach ($pages as $filename => $value) {

        if (is_array ($value)) {
            $pageTitle = $value ['pageTitle'];
        } else {
            $pageTitle = $value;
        }

        if ($filename == $currentPage) {
            $attr_current = ' class="current"';
        } else {
            $attr_current = '';
        }
        ?>
        <li<?php echo $attr_current; ?>><a href="<?php echo $filename; ?>"><?php echo $pageTitle ; ?></a>

        <?php if (is_array ($value)) { ?>
            <ul id="submenuList">
            <?php foreach ($value ['subpages'] as $subfilename => $subpageTitle) { ?> 
                <li><a href="<?php echo $subfilename; ?>"><?php echo $subpageTitle ; ?></a></li>
            <?php } ?>
            </ul>
        <?php } ?>

        </li>

    <?php } //foreach ?>
    </ul>
</div>

正如你所看到的,这不是最干净的解决方案,所以如果我要做这样的事情,我会像这样编写上面的代码:

<?php
$pages = array(
    'index.php' => 'Home',
    'about.php' => array('pageTitle' => 'About', 'subpages' => array(
        'about1.php' => 'About subpage #1',
        'about2.php' => 'About subpage #2',
        'about3.php' => 'About subpage #3')),        
    'contact.php' => 'Contact',
    'faq.php' => 'FAQ',
    'tutorials.php' => 'Tutorials',
) ;

$currentPage = basename($_SERVER['REQUEST_URI']) ;

?>

<div id="menu">
    <ul id="menuList">
    <?php foreach ($pages as $filename => $value):

        $pageTitle = is_array ($value) ? $value ['pageTitle'] : $value;   
        $attr_current = $filename == $currentPage ? ' class="current"' : '';
        ?>
        <li<?=$attr_current?>><a href="<?=$filename?>"><?=$pageTitle?></a>

        <?php if (is_array ($value)): ?>
            <ul id="submenuList">
            <?php foreach ($value ['subpages'] as $subfilename => $subpageTitle): ?> 
                <li><a href="<?=$subfilename?>"><?=$subpageTitle?></a></li>
            <?php endforeach; ?>
            </ul>
        <?php endif; ?>

        </li>

    <?php endforeach; ?>
    </ul>
</div>

也不是很整洁,但是..

如果您想使用后者,请记住:

【讨论】:

  • 这就是我要建议的...只需向数组添加另一个维度。 :)
  • 甜蜜。我会试一试。 (也许也开始寻找一个不错的 php 入门。{humbled-grin})
  • 太棒了。如果这对你有用,请考虑接受这个答案:)
  • 甜蜜。这似乎按预期工作洋地黄。谢谢!我可能会补充一点,您的第一个自称“肮脏”的解决方案有效,而通过洗衣机发送的解决方案只是吐出子弹、左括号和右括号。 ;)
  • 回答接受洋地黄! :)
猜你喜欢
  • 2023-03-06
  • 1970-01-01
  • 2013-09-26
  • 1970-01-01
  • 1970-01-01
  • 2017-10-08
  • 1970-01-01
  • 2010-11-29
  • 2013-06-14
相关资源
最近更新 更多