2

我有一个带有侧边栏的网页,它使用了一些 CSS 类。如果class =“active”,那么链接将被突出显示。我想让它在任何页面上,脚本都会检查它所在的链接,然后决定要突出显示哪个链接。下面是我所在的位置,但我真的不知道如何继续,请指出正确和更好的方向!如果我有 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, no .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 回答