web-dev-qa-db-ja.com

PHPインクルードを使用してページにアクティブなリンクを設定する

だから私は答えを見つけるために1時間SOを検索し、またさまざまな方法を試しました これを含む

ナビゲーションと一緒に自分のページを含めようとしています。しかし、正しいページでは、リストアイテムにactiveのクラスが必要です。ナビゲーションはheader.phpにあり、現在は次のようになっています。

<nav>
    <ul>
      <li class="active"> <a href="/">Home</a> </li>
      <li> <a href="#">Apps</a> </li>
      <li> <a href="#">Forums</a> </li>
    </ul>
  </nav>

まず、JS(jQuery)が優れているのか、それともPHPが優れているのか)、どちらも機能するかどうかは関係ありません。

また、私はPHPで、学ぼうとしているのは少し新しいです。

使用するのが最も簡単な(うまくいけば)方法は何でしょうか?したがって、ナビゲーションを与えるためだけに多くのコードを変更する必要はありませんclass="active"

13
nowayyy

$page変数(現在表示しているページの名前が含まれている)があると仮定します。

  <nav>
    <ul>
      <li class="<?php echo ($page == "home" ? "active" : "")?>"> <a href="/">Home</a> </li>
      <li class="<?php echo ($page == "apps" ? "active" : "")?>"> <a href="#">Apps</a> </li>
      <li class="<?php echo ($page == "forums" ? "active" : "")?>"> <a href="#">Forums</a> </li>
    </ul>
  </nav>
32

これは、他の変数を追加する必要がない簡単な方法です。

<li class="<?php echo ($_SERVER['PHP_SELF'] == "/index.php" ? "active" : "");?>">
<a href="index.php">Start</a>
</li>
<li class="<?php echo ($_SERVER['PHP_SELF'] == "/about.php" ? "active" : "");?>">
<a href="about.php">About</a>
</li>
<li class="<?php echo ($_SERVER['PHP_SELF'] == "/practices.php" ? "active" : "");?>">
<a href="practices.php">Practices</a>
</li>
8

クエリ文字列を使用している場合exmaple.com?page_id=AppsphpよりもページIDを渡すには、このことに取り組むことができます

$ page_id = $ _REQUEST ['page_id'];

 <ul>
          <li class="<?php echo ($page_id == "Home" ? "active" : "");?>">
 <a href="/">Home</a>
          </li>
          <li class="<?php echo ($page_id == "Apps" ? "active" : "");?>">
 <a href="#">Apps</a>
          </li>
          <li class="<?php echo ($page_id == "Forums" ? "active" : ""); ?>">
 <a href="#">Forums</a>
          </li>
        </ul>
0
Punit

Basename関数を追加します。その後、それは私が望むように動作します。

0
Hamza Khan

ページヘッダーの使用:

<?php $loc = this.location; ?>

次に、すべてのリンクで次を追加します。

<?php(this.href == $loc) ? echo 'class="active"' : '' ?>
0
lightofsouls

$_SERVERの前にbasename関数を追加します。私はそれがうまくいくことを願っています。

echo (basename($_SERVER['PHP_SELF']) == 'yourPageName' ?'active' : " ");
0
Hamza Khan

index.phpページで変数$ page = "index.php"を定義し、他のページではページ名に応じて変数値を変更します

<li class="<?php echo ($page == "index.php" ? "active" : "")?>">
    <a href="index.php">Home</a>
</li>
<li class="<?php echo ($page == "about.php" ? "active" : "")?>">
    <a href="about.php">About</a>
</li>
<li class="<?php echo ($page == "service.php" ? "active" : "")?>">
    <a href="service.php">Services</a>
</li>
<li class="<?php echo ($page == "contact.php" ? "active" : "")?>">
    <a href="contact.php">Contact</a>
</li>
$page_url = $_SERVER['QUERY_STRING'];

$s = explode("&",$page_url);
//print $s[0];
$page = $s[0];

function createTopNav($page)
{
    $pages = array(
        array(
            'name'=>'Feeder',
            'link'=>'page=feeder'
        ),
        array(
            'name'=>'Services',
            'link'=>'page=services'
        ),
        array(
            'name'=>'Development',
            'link'=>'page=development'
        ),
        array(
            'name'=>'Design',
            'link'=>'page=design'
        ),

    );
    $res = "";
    foreach($pages as $key=>$val)
    {
        if($val['link']==$page)
        {
            $res.= "<a class=\"active\" href=\"?"
            .$val['link'].
            "\">"
            .$val['name'].
            "</a>";
        }
        else
        {
            $res.= "<a class=\"\" href=\"?"
            .$val['link'].
            "\" >"
            .$val['name'].
            "</a>";
    }
    }
    $res.="";
    return $res;
}

echo createTopNav($page);
0

JQueryを使用したくない場合、またはPHP-次に実行できます:

  1. 「your-include-nav.php」の各<li>要素にIDまたは異なるCLASSを指定します。
  2. 各ページの<head>セクションでCSSを使用して「アクティブ」スタイルを定義します。
0
Niko