2

css クラスを使用するサイドバーのある Web ページがあります。クラス = 「アクティブ」の場合、リンクが強調表示されます。どのページでも、スクリプトがどのリンクにあるかを確認し、どのリンクを強調表示するかを決定するようにしたいと思います。以下は私がいる場所です、しかし、どうすればよいのか本当にわかりません。正しいより良い方向に向けてください! 20 個のリンクがある場合、このスクリプトは長すぎます.... ありがとう!


<?php






$arr = array(

'1' => '/about.php', 
'2'=> '/abt-history2.php',
'3' => '/abt-shop.php',
);

$host =  $_SERVER['REQUEST_URI'];


if($host == $arr['1']) 
{
    $class1 = "active";
}

else if ($host == $arr['2']) 
{
    $class2 = "active";
}

else if ($host == $arr['3']) 
{
    $class3 = "active";
}


 ?>






   <ul id="navigationSide">
      <div style="padding-left:20px; padding-bottom:10px; font-size:16px; font-weight:800; color:#777;">TITLE</div>
      <li><a href="<?php print $arr['1'];  ?>" class="<?php echo"$class1" ?>">AA</a></li>
      <li><a href="<?php print $arr['2'];  ?>" class="<?php echo"$class2" ?>">BB</a></li>
    </ul>
    <div style="padding:5px;"></div>
    <ul id="navigationSide">
      <div style="padding-left:20px; padding-bottom:10px;  font-size:16px; font-weight:800; color:#777;">TITLE2</div>
      <li><a href="<?php print $arr['3'];  ?>" class="<?php echo"$class3" ?>" >CC</a></li>

</ul>
4

4 に答える 4

2
Try
  <?php
    $arr = array(

      '1' => 'about.php', 
      '2'=> 'abt-history.php',
      '3' => 'abt-shop.php',
    );


    foreach($arr as $key => $page){

      $class = "";

      $currentPage = $_SERVER['REQUEST_URI']; // check its value and get page name

      if($currentPage ==  $page){

       $class = 'class ="active"';
      }
    ?>
    <li>
        <a href ="yourdomainname/<?php echo $page; ?>" <?php echo $class; ?>>
           link<?= $key; ?>
        </a>
    </li>
    <php
    }
    ?>
于 2013-03-30T10:54:05.317 に答える
1

あなたの考えは大丈夫です。問題は、キーがで終わり.php<li>クラスが検索するためabt-shop.php何も見つからないことです。

于 2013-03-30T10:36:54.650 に答える
0

わかっただけ

20 個のリンクがある場合、このスクリプトは長すぎます.... ありがとうございます!

そんな時、forループが役に立ちます。

<?php for($i=0; $i<20; $i++){ ?>

<li>
    <a href ="<?php echo $arr['abt-shop']; ?>"
       class="<?php echo "$class.$i" ?>">
       link<?= $i; ?>
    </a>
</li>

<?php } ?>

アップデート


<?php $arr = array( '1' => '/about.php', 
                    '2'=> '/abt-history2.php',
                    '3' => '/abt-shop.php', );


 $host = $_SERVER['REQUEST_URI'];


 switch($host){

 case $arr['1'];
        $class1 = "active";
    break; 
case $arr['2'];
        $class2 = "active";
    break; 
case $arr['3'];
        $class3 = "active";
    break; 
case $arr['4'];
        $class4 = "active";
    break; 



 }
于 2013-03-30T10:36:58.030 に答える
0

わかりました、これは新しいです。以前に投稿したものをすべて削除しました。これが別の回答です。私のローカルホストに$_SERVER['REQUEST_URI']入るので、スクリプトに追加したので、ファイルの構造に応じて削除できます。/Portal/TEST/file.php/Portal/TEST/

<?php 
$arr = array(

'0' => '/Portal/TEST/about.php', 
'1'=> '/Portal/TEST/abt-history2.php',
'2' => '/Portal/TEST/abt-shop.php',
'3' => '/Portal/TEST/extra.php',
'3' => '/Portal/TEST/blaze.php',
);




 ?>


<h2>TITLE</h2>

<?php 

 for($i=0; $i< count($arr); $i++) {  



    if($_SERVER['REQUEST_URI'] == $arr[$i]) {

    $class = 'active';
 ?>


  <li><a href="<?php print $arr[$i];  ?>" class="<?php echo "$class".$i ?>"><?php echo $class ?>
</a></li>   <?php }else {
$class  = 'In active';

?>  
  <li><a href="<?php print $arr[$i];  ?>" class="<?php echo "$class".$i ?>"><?php echo $class ?>
</a></li> 

<?php
}

 }?>
于 2013-03-30T13:15:01.480 に答える