2

こんにちは、ユーザーがどのページにいるのかを知ることができるように、PHP でナビゲーション バーをアクティブにしようとしています。私はphpが初めてで、それについてあまり知りません。では、このコードに class="active" を追加して、アクティブなナビゲーション バーを作成し、すべてのページを同じ index.php ページに表示するにはどうすればよいでしょうか。

 <a href="?page=home"> Home</a></br>
<a href="?page=news"> News</a></br>
<a href="?page=about"> About</a></br>
<a href="?page=contact"> Contact</a></br>

 <?php
if (!isset($_GET['page'])) {
    include "home.php";
} else {
switch ($_GET['page']) {
    case "home":
         include "home.php";
    break;
    case "news":
         include "news.php";
    break;
    case "about":
         include "about.php";
    break;
    case "contact":
         include "contact.php";
    break;
    default:
         include "home.php";
    };
}
?>
4

6 に答える 6

1

以下の PHP コードをナビゲーションとして使用できます。ナビゲーションには順序なしリスト (つまり<ul><li><a href=""></a></li></ul>) タグを使用することをお勧めします。

<ul>
    <li<?php if($_GET['page']=="home")   { echo " class=\"active\""; } ?>><a href="?page=home"> Home</a></li>
    <li<?php if($_GET['page']=="news")   { echo " class=\"active\""; } ?>><a href="?page=news"> News</a></li>
    <li<?php if($_GET['page']=="about")  { echo " class=\"active\""; } ?>><a href="?page=about"> About</a></li>
    <li<?php if($_GET['page']=="contact"){ echo " class=\"active\""; } ?>><a href="?page=contact"> Contact</a></li>
</ul>

次に、以下のスタイルを CSS に追加します。

.active {
    font-weight: bold;
}
于 2013-11-03T04:50:42.357 に答える
1

メニュー項目の配列を作成し、foreachループを使用してメニューを動的に生成します。

そうすれば、配列に新しいアイテムを追加すると、メニューに表示されます。

<html>
<head>
    <title>Website</title>

    <style type="text/css" media="screen">
        .active {
            font-weight: bold;
        }
    </style>
</head>
<body>

<?php

// This is your menu
$items = array("home", "news", "about", "contact");

foreach ($items as $item)
{
    if (isset($_GET['page']) && $_GET['page'] == $item)
    {
        echo '<a href="?page=' . $item . '" class="active"> ' . $item . '</a></br>';
        $activePage = $item . ".php";
    }
    else
    {
        echo '<a href="?page=' . $item . '"> ' . $item . '</a></br>';
    }
}

// Include your page
if (isset($activePage))
{
    include $activePage;   
}
else
{
    include "home.php";
}

?>

</body>
</html>

すべてのコードをこのコードに置き換えて、試してみてください。ループを使用して、記述する必要がある冗長なマークアップの量を減らすことは、DRYであるだけでなく、将来的に多くの時間を節約できます!

于 2013-11-03T04:49:15.980 に答える