2

多くのページで同じメニューを共有している場合

    include_once('common-menu.php');

ただし、メニューはページごとに異なる必要があります

ページ A

  <ul class="nav navbar-nav">
    <li class="active"><a href="a.php">A Page</a></li>
    <li><a href="b.php">B Page</a></li>
  </ul>

ページ B

  <ul class="nav navbar-nav">
    <li><a href="a.php">A Page</a></li>
    <li class="active"><a href="b.php">B Page</a></li>
  </ul>

私は2つの解決策しか知りません。

解決策 1: サーバー側で URL を検出し、出力を決定する

  <ul class="nav navbar-nav">
    <li class="<? echo 'active'; ?>"><a href="a.php">A Page</a></li>
    <li class=""><a href="b.php">B Page</a></li>
  </ul>


  <ul class="nav navbar-nav">
    <li class=""><a href="a.php">A Page</a></li>
    <li class="<? echo 'active'; ?>"><a href="b.php">B Page</a></li>
  </ul>

解決策 2: js/jquery を使用して URL を検出し、ページが読み込まれた後に js/jquery によってクラスを変更します。

この問題のベストプラクティスは何ですか?

アクティブなアイテムを決定するために if/case/map を使用する必要がないように、プログラム以外のソリューションはありますか?

4

2 に答える 2

1

currPage()PHP 側では、組み込みの PHP関数を使用して次のようなことができます。

<li class="menu-item <?php chk_active('myprojects.php');?>"><a href="myprojects.php">Projects</a></li>
<li class="menu-item <?php chk_active('invoicehistory.php');?>"><a href="invoicehistory.php">Invoice History</a></li>

chk_active() 関数は次のようになります。

function chk_active($chkPage){
    if (currPage()==$chkPage) {
        echo 'active';
    }else if (currPage()=='project.php' && $chkPage=='myprojects.php'){
        echo 'active';
    }
}
于 2013-09-18T17:04:59.740 に答える