1

私は PHP と HTML が初めてで、最初の Web サイトを作成していましたが、ヘッダーを何度も繰り返さなければならないことがわかったので、それを「Header.php」ファイルに入れて含めました。どのページにアクセスしたかを確認します。彼らがどのページに移動したかを知る必要があるので、彼らが移動したページに 'class="active"' を配置できます。コードが長すぎない場合は、コードが必要になる場合があります。すべての要素を示す方法の例でも役立ちます。とにかく、私のコードはここにあります

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <title>Metamorphosis Design Free Css Templates</title>
        <meta name="keywords" content="" />
        <meta name="description" content="" />
        <input type="hidden" id="link_is_clicked" name="link_is_clicked" value="0"/> 
        <link href="styles.css" rel="stylesheet" type="text/css" media="screen" />
        <link rel="stylesheet" href="nivo-slider.css" type="text/css" media="screen" />
    </head>
    <body>
        <div id="bg_top">
            <div id="wrap_bg">
                <div id="wrap">
                    <div id="header">
                        <div id="menu">
                            <ul>
                                <li class="but1_menu"><a href="index.php"class="active">Home</a></li>
                                <li class="but2_menu"><a href="blog.php">Blog</a></li>
                                <li class="but3_menu"><a href="gallery.php">Gallery</a></li>
                                <li class="but4_menu"><a href="about.php">About Us</a></li>
                                <li class="but5_menu"><a href="contact.php">Contact Us</a></li>
                            </ul>
                        </div>
                        <div id="logo">
                            <h1><a href="#">metamorph_strongrey</a></h1>
                            <a href="#"><small>Small Company Slogan Goes Here</small></a>
                        </div>

助けてくれてありがとう。

4

5 に答える 5

3

あなたが持っているような小さなリストの場合、私は通常、簡単なifステートメントで行きます:

<li class="but1_menu"><a href="index.php"<?=(($_SERVER['SCRIPT_NAME']=='index.php')?' class="active"':'');?>>Home</a></li>
<li class="but2_menu"><a href="blog.php"<?=(($_SERVER['SCRIPT_NAME']=='blog.php')?' class="active"':'');?>>Blog</a></li>
<li class="but3_menu"><a href="gallery.php"<?=(($_SERVER['SCRIPT_NAME']=='gallery.php')?' class="active"':'');?>>Gallery</a></li>
<li class="but4_menu"><a href="about.php"<?=(($_SERVER['SCRIPT_NAME']=='about.php')?' class="active"':'');?>>About Us</a></li>
<li class="but5_menu"><a href="contact.php"<?=(($_SERVER['SCRIPT_NAME']=='contact.php')?' class="active"':'');?>>Contact Us</a></li>

これにより、を介して現在のスクリプトの名前がチェックされ、$_SERVER['SCRIPT_NAME']一致する場合はエコーされclass="active"ます。

于 2012-08-10T19:21:18.707 に答える
2

最初のステップ: ユーザーが現在アクセスしているページを取得する

$current_url = substr($_SERVER["SCRIPT_NAME"],strrpos($_SERVER["SCRIPT_NAME"],"/")+1);

2 番目のステップ: すべてのメニュー リンク ページを含む配列を作成する

$all_urls = array('index.php', 'blog.php', 'gallery.php', 'about.php', 'contact.php');

3 番目のステップ: 現在の URL が配列内にあるかどうかを確認します。はいの場合は、クラスを適用します

<ul>        
    <li class="but1_menu"><a href="index.php" <?php if(in_array($current_url, $all_urls)){echo 'class="active"'; } ?>>Home</a></li>
    <li class="but2_menu"><a href="blog.php" <?php if(in_array($current_url, $all_urls)){echo 'class="active"'; } ?>>Blog</a></li>
    <li class="but3_menu"><a href="gallery.php" <?php if(in_array($current_url, $all_urls)){echo 'class="active"'; } ?>>Gallery</a></li>
    <li class="but4_menu"><a href="about.php" <?php if(in_array($current_url, $all_urls)){echo 'class="active"'; } ?>>About Us</a></li>
    <li class="but5_menu"><a href="contact.php" <?php if(in_array($current_url, $all_urls)){echo 'class="active"'; } ?>>Contact Us</a></li>    
</ul>
于 2012-08-10T23:30:36.527 に答える
1

アンカー タグのhrefパラメーターに、<a>どのリンクが押されたかを示すクエリ文字列を配置するだけです。

<a href="about.php?action=about">About Us</a>  

ここで、PHP コードで、$_GET変数を確認する必要があります。これは、URL で渡されるすべてのパラメーターの連想配列です。と等しく$_GET['action']なりaboutます。

もう一度ヘッダーを作成し、クラスを追加して「アクティブな」リンクを示したい場合は、変数のaction要素をテストするだけです。$_GET

ヘッダーファイルに次のようなリンクの配列があると仮定しましょう -

$headerLinks = array(
  'about' => array(
     'href'=>'about.php?action=about',
     'title'=>'About Us' 
  ),
  'home' => array(
     'href'=>'home.php?action=home',
     'title'=>'Home' 
  ),
  'blag' => array(
     'href'=>'blag.php?action=blag',
     'title'=>'Our Blag' 
  ),
  ...
);

activeその配列の内容をループして、クラスを持つ適切なリンクを作成します。

foreach($headerLinks AS $key => $link){
  $isActive = $_GET['action'] == $key? 'active' : '';
  echo '<a href="'.$link['href'].'" class="'.$isActive.'">'.$link['title'].'</a>';
}
于 2012-08-10T19:22:57.097 に答える
0

もう1つの方法。

あなたのページは次のようになります

<?php 
   $curr = "gallery";
   include('header.php');
?>

$curr 変数には、下のメニューにある値があります

そして今メニュー

                        <li class="but1_menu"><a <?php echo ($curr == "index" ? "class='active'" : "" ); ?> href="index.php">Home</a></li>
                        <li class="but2_menu"><a <?php echo ($curr == "blog" ? "class='active'" : "" ); ?> href="blog.php">Blog</a></li>
                        <li class="but3_menu"><a <?php echo ($curr == "gallery" ? "class='active'" : "" ); ?> href="gallery.php">Gallery</a></li>
                        <li class="but4_menu"><a <?php echo ($curr == "about_us" ? "class='active'" : "" ); ?> href="about.php">About Us</a></li>
                        <li class="but5_menu"><a <?php echo ($curr == "contact_us" ? "class='active'" : "" ); ?> href="contact.php">Contact Us</a></li>

コードをきれいに保つには、複雑なものがないため、短い if/else ステートメントを使用することをお勧めします。

また、「アクティブな」クラスを配置することをお勧めします<li>が、これは各開発者のスタイルによって異なります。一部の複雑なメニューでは、非常に役立ちます。

于 2012-08-11T15:41:10.237 に答える
0

このページをチェックアウトする必要があります。

http://php.net/manual/en/reserved.variables.server.php

具体的には REQUEST_URI に関する部分であり、それが必要なものになります。if または case ステートメントでこれを確認し、必要に応じてクラスを適用します。

ナビゲーション バーの uris を確認するには、数行のコードしか必要ありません。

于 2012-08-10T19:21:58.627 に答える