2025年5月15日木曜日

PHPプログラミングで「動的なメニューの表示」使用例

 PHPプログラミングで「ホーム」のメニューの使用例ですね。ここでは、簡単なHTML構造とPHPのコードを組み合わせて、動的なメニューの表示と、現在選択されているメニュー項目の強調表示を行う例をご紹介します。

基本的なHTML構造 (menu.php):

HTML
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>シンプルなメニュー</title>
    <style>
        .menu {
            list-style: none;
            padding: 0;
            margin: 0;
            display: flex;
        }

        .menu-item {
            margin-right: 20px;
        }

        .menu-item a {
            text-decoration: none;
            color: #333;
        }

        .menu-item.active a {
            font-weight: bold;
            color: blue;
        }
    </style>
</head>
<body>

<ul class="menu">
    <?php
    $menuItems = [
        'home' => 'ホーム',
        'about' => '私たちについて',
        'services' => 'サービス',
        'contact' => 'お問い合わせ'
    ];

    $currentPage = basename($_SERVER['PHP_SELF'], '.php'); // 現在のファイル名を拡張子なしで取得

    foreach ($menuItems as $key => $label) {
        $activeClass = ($key === $currentPage) ? 'active' : '';
        echo '<li class="menu-item ' . $activeClass . '"><a href="' . $key . '.php">' . $label . '</a></li>';
    }
    ?>
</ul>

<h1>ようこそ、ホームへ!</h1>
<p>ここはホームページのコンテンツが表示される場所です。</p>

</body>
</html>

各メニューに対応するPHPファイル (例: home.php, about.php など):

home.php:

PHP
<?php include 'menu.php'; ?>

about.php:

PHP
<?php include 'menu.php'; ?>

<h1>私たちについて</h1>
<p>私たちの会社やサービスについて説明します。</p>

services.php:

PHP
<?php include 'menu.php'; ?>

<h1>サービス</h1>
<p>提供しているサービスの一覧です。</p>

contact.php:

PHP
<?php include 'menu.php'; ?>

<h1>お問い合わせ</h1>
<p>お問い合わせフォームや連絡先を記載します。</p>

解説:

  1. HTML構造 (menu.php):

    • <ul class="menu"> でメニューのリストを作成します。
    • CSSで基本的なメニューのスタイルを定義しています(必要に応じて調整してください)。
    • PHPのコードブロック <?php ... ?> 内で動的にメニュー項目を生成します。
  2. メニュー項目の定義 ($menuItems):

    • 連想配列 $menuItems で、メニューのキー(URLの一部として使用)と表示するラベルを定義します。
  3. 現在のページを特定 ($currentPage):

    • $_SERVER['PHP_SELF'] は現在のスクリプトのパスとファイル名を取得します。
    • basename() 関数でファイル名のみを取り出します。
    • .php を取り除くことで、メニューのキーと比較できるようにします。
  4. メニュー項目のループ処理 (foreach):

    • foreach ループで $menuItems の各要素を処理します。
    • $activeClass 変数で、現在のページに対応するメニュー項目に active クラスを付与するための条件分岐を行います。
    • echo を使って、各メニュー項目の <li> 要素を生成します。
      • href 属性には、キーに .php を付けたファイル名を指定します。
      • <a> タグの中には、メニューのラベルが表示されます。
      • class 属性には、現在のページであれば active クラスが追加されます。
  5. 各コンテンツファイル (home.php, about.php など):

    • 各ファイルの上部で include 'menu.php'; を記述することで、共通のメニュー構造を読み込みます。
    • その後に、各ページ固有のコンテンツを記述します。

動作:

この例では、ユーザーが home.php にアクセスすると、「ホーム」のメニュー項目が太字で青色に強調表示されます。同様に、about.php にアクセスすると、「私たちについて」が強調表示されます。

さらに発展させる場合:

  • 設定ファイルからのメニュー定義: メニュー項目をPHPファイルに直接記述するのではなく、設定ファイル(JSONや配列形式のPHPファイルなど)から読み込むことで、メニューの変更がより簡単になります。
  • データベースからのメニュー管理: より複雑なサイトでは、メニュー項目をデータベースで管理し、動的に生成することも考えられます。
  • URLパラメータの利用: index.php?p=home のようにURLパラメータを使ってページを切り替える方式も一般的です。この場合は、$_GET['p'] で現在のページを判定します。
  • テンプレートエンジンの利用: より大規模なアプリケーションでは、HTMLとPHPのロジックを分離するために、TwigやBladeなどのテンプレートエンジンを利用することが推奨されます。

この基本的な例を参考に、ご自身のプロジェクトの要件に合わせてメニューの構造やスタイルを拡張してみてください。

0 件のコメント:

コメントを投稿