0

ここで規定されている方法/回答の使用: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>

私がやりたいのは、[バージョン情報]メニュー項目またはFAQメニューにサブメニュー項目を追加できるようにすることです。

何かがうまくいくまで、ハントアンドペックのphp部分で迷子になっています。:)

確かに、それはせいぜい10ページのサイトしかないので、各ページにメニューコードを含めることができます。しかし、それはどのような学習実験でしょうか?:)

この「デザイナー志望のコーダー」についての洞察を事前に感謝します

ps。上記のコードを提供してくれたFanisに感謝します

4

1 に答える 1

1

[スパゲッティコードアラート]

あなたはこれを試すことができます、

<?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>

あまりきれいではありませんが..

後者を使用する場合は、次の点に注意してください。

  • 制御構造に代替構文を使用します
  • ここ<?=で読む必要のある短いタグを使用して、使用できるかどうかを確認します
  • ここで使用する必要のあるCSSについて読むsubmenuList
于 2012-12-10T18:55:46.697 に答える