1

私はウェブサイトを作成しており、ヘッダー.php を含めたすべてのページについて、ページの上部にある単なるロゴとナビゲーション バーです。以下はナビゲーション メニューのコードです。

<nav id="navmenu">
<ul>
<li><a href="index.php" class="active">Home</a></li>
<li><a href="about.php">About</a></li>
<li><a href="portfolio.php">Portfolio</a></li>
<li><a href="contact.php">Contact</a></li>
</ul>
</nav>

ユーザーがどのページにいるかに応じて class="active" が変化するようにするにはどうすればよいですか?

4

9 に答える 9

1

$_SERVER['PHP_SELF'] を利用する

<li><a href="index.php" <?php if ($_SERVER['PHP_SELF'] == "/index.php") echo "class='active'" ?>>Home</a></li>

<li><a href="about.php" <?php if ($_SERVER['PHP_SELF'] == "/about.php") echo "class='active'" ?>>About</a></li>
于 2013-08-21T17:06:35.903 に答える
1

サーバー変数 PHP_SELF を使用できます。$_SERVER['PHP_SELF']ファイル名を付けます。/index.phpサイト名が追加されます。www.example.com

<nav id="navmenu">
<ul>
<li><a href="index.php" <?php if ($_SERVER['PHP_SELF'] == "/index.php") echo "class='active'" ?>>Home</a></li>
<li><a href="about.php" <?php if ($_SERVER['PHP_SELF'] == "/about.php") echo "class='active'" ?>>About</a></li>
<li><a href="portfolio.php" <?php if ($_SERVER['PHP_SELF'] == "/portfolio.php") echo "class='active'" ?>>Portfolio</a></li>
<li><a href="contact.php" <?php if ($_SERVER['PHP_SELF'] == "/contact.php") echo "class='active'" ?>>Contact</a></li>
</ul>
</nav>

それが役に立ったことを願っています:)

于 2013-08-21T17:13:47.170 に答える
1

これを使用できます:$_SERVER['PHP_SELF']

現在表示しているページの名前が表示されます。

次に、ヘッダー ファイルで、次のようなものを使用します。

<a href="contact.php" <?php if($_SERVER['PHP_SELF'] == "/contact.php") echo 'class="active"'; ?>>Contact</a>
于 2013-08-21T17:03:08.077 に答える
0

このようなことを行う方法はおそらく複数あります。最も簡単な方法は、ヘッダー ファイルを次のように変更することです。

<?php
    if (!defined('HOME_LINK_CLASS')) {
        define('HOME_LINK_CLASS', 'active');
    }
?><nav id="navmenu">
<ul>
<li><a href="index.php" class="<?php echo HOME_LINK_CLASS;?>">Home</a></li>
<li><a href="about.php">About</a></li>
<li><a href="portfolio.php">Portfolio</a></li>
<li><a href="contact.php">Contact</a></li>
</ul>
</nav>

ここで、特定のページでクラスを (たとえば) "非アクティブ" にしたい場合は、includeそのページのコマンドの前に次の行を追加できます。

define('HOME_LINK_CLASS', 'inactive');
于 2013-08-21T17:03:20.547 に答える
0

http://webcheatsheet.com/PHP/get_current_page_url.php

このようなものを使用して、現在のページの URL を確認します。次に、if ステートメントを使用して特定のファイルを要求します

于 2013-08-21T17:04:33.820 に答える
0

これを行う簡単な方法は、ページの配列を作成し、その配列をループしてメニュー項目を作成し、各ループでアクティブなファイルかどうかをチェックすることです。このメソッドを使用すると、ページの追加または削除も非常に簡単です。メニュー配列の項目を変更するだけです。また、コードははるかに小さくなり、多数のページの場合に読みやすくなります。

// get active file, $_SERVER['SCRIPT_NAME'] is less spoofable than $_SERVER['PHP_SELF']
$active = basename( $_SERVER['SCRIPT_NAME'] );

// create array of pages
$main_nav = array( 
    'index.php' => 'Home', 
    'about.php' => 'About', 
    'portfolio.php' => 'Portfolio', 
    'contact.php'=>'Contact'
    );

// create menu 
//   notice the usage of PHP shorthand:
//   ( $active == $file ? 'class="active"' : '' ) is the same as:
//
//   if ( $active == $file ) 'class="active"';
//   else '';
//
echo '<nav id="navmenu"><ul>'.PHP_EOL;
foreach ($main_nav as $file => $title) {
    echo '<li><a href="' . $file . '" ' . ( $active == $file ? 'class="active"' : '' ) . '>' . $title . '</a></li>'.PHP_EOL;
}
echo '</ul></nav>';
于 2013-08-21T17:35:59.950 に答える
0

document.locationページがメニューの と同じように( ) をアドレス指定する場合href、アクティブなアイテムのクラスは必要なく、疑似 CSS クラス を使用するだけ:activeです。

それ以外の場合は、$_SERVERスーパーグローバルを確認PHP_SELFして、目的のメニュー項目にクラスを追加する必要があります。以下のコードのようなもの:

//code snipped not tested
<li><a href="index.php" class="<?php echo preg_match("/index.php$/", $_SERVER["PHP_SELF"]) ? ("active") : (""); ?>">Home</a></li>
于 2013-08-21T17:12:35.673 に答える
0

PHP_SELF次のようにファイルの名前を取得するために使用できます。

<?php
$page = $_SERVER["PHP_SELF"];
switch($page){
    case "/index.php": $class = "index";break;
    case "/home.php": $class = "home";break;
    case "/info.php": $class = "info";break;
    default: $class = "active";break;
}
?>

<nav id="navmenu">
    <ul>
        <li><a href="index.php" class="<?php echo $class; ?>">Home</a></li>
        <li><a href="about.php">About</a></li>
        <li><a href="portfolio.php">Portfolio</a></li>
        <li><a href="contact.php">Contact</a></li>
    </ul>
</nav>
于 2013-08-21T17:10:47.587 に答える
0

現在のスクリプト名を取得し$_SERVER['PHP_SELF']、三項ステートメントを使用activeしてそのリンクにプロパティを追加できます。

<?php $p = strtolower(basename($_SERVER['PHP_SELF'])); ?>

<nav id="navmenu">
<ul>
<li><a href="<?php echo ($p=="home.php" ? "active" : "")?>">Home</a></li>
<li><a href="<?php echo ($p=="about.php" ? "active" : "")?>">About</a></li>
<li><a href="<?php echo ($p=="portfolio.php" ? "active" : "")?>">Portfolio</a></li>
<li><a href="<?php echo ($p=="contact.php" ? "active" : "")?>">Contact</a></li>
</ul>
</nav>
于 2013-08-21T17:11:54.983 に答える