PHP条件,如果是当前页面,则突出显示链接

时间:2013-03-30 10:32:28

标签: php arrays if-statement self

我有一个带有侧栏的网页,它使用了一些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 个答案:

答案 0 :(得分: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
    }
    ?>

答案 1 :(得分:1)

你的想法没问题。事实是,您的密钥以.php结束,而您的<li>类会查找abt-shop,而不是.php,因此他们找不到任何内容。

答案 2 :(得分: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; 



 }

答案 3 :(得分:0)

好的,这是新的,我删除了之前发布的所有内容,这就是另一个答案。 由于$_SERVER['REQUEST_URI']在我的localhost中获得/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
}

 }?>