How to set current page “active” in php

后端 未结 17 1755
栀梦
栀梦 2020-12-02 21:38

Hi I have a menu on my site on each page, I want to put it in it\'s own menu.php file but i\'m not sure how to set the class=\"active\" for whatever page i\

相关标签:
17条回答
  • 2020-12-02 21:53

    You can use

    <?php
    function active($current_page){
        $page = $_GET['p'];
        if(isset($page) && $page == $current_page){
            echo 'active'; //this is class name in css
        }
    }
    ?>
    <ul>
        <li><a class="<?php active('page1');?>" href="?p=page1">page1</a></li>
        <li><a class="<?php active('page2');?>" href="?p=page2">page2</a></li>
        <li><a class="<?php active('page3');?>" href="?p=page3">page3</a></li>
        <li><a class="<?php active('page4');?>" href="?p=page4">page4</a></li>
    </ul>
    
    0 讨论(0)
  • 2020-12-02 21:54

    Put all the below code in menu.php and everything will be taken care of.

    // function to get the current page name
    function PageName() {
      return substr($_SERVER["SCRIPT_NAME"],strrpos($_SERVER["SCRIPT_NAME"],"/")+1);
    }
    
    $current_page = PageName();
    

    Use the above to get the current page name then put this in your menu

    <li><a class="<?php echo $current_page == 'offnungszeiten.php' ? 'active':NULL ?>" href="offnungszeiten.php">Öffnungszeiten</a></li>
    <li><a class="<?php echo $current_page == 'sauna.php' ? 'active':NULL ?>" href="sauna.php">Sauna</a></li>
    <li><a class="<?php echo $current_page == 'frauensauna.php' ? 'active':NULL ?>" href="frauensauna.php">Frauensauna</a></li>
    <li><a class="<?php echo $current_page == 'custom.php' ? 'active':NULL ?>" href="custom.php">Beauty Lounge</a></li>
    <li><a class="<?php echo $current_page == 'feiertage.php' ? 'active':NULL ?>" href="feiertage.php">Feiertage</a></li>
    

    where active is the name of the class which will highlight your menu item

    0 讨论(0)
  • 2020-12-02 21:57

    adding this:<?= ($activePage == 'home') ? 'active':''; ?> to my link it works perfectly, I only can't make the child of a submenu working to make the parent active.

    0 讨论(0)
  • 2020-12-02 22:01

    I have done it with php in this way,

    function createTopNav($active)
    {
        $pages = array(
            array(
                'name'=>'Home',
                'link'=>'index'
            ),
            array(
                'name'=>'Smartphone',
                'link'=>'smartphone'
            ),
            array(
                'name'=>'Tablet',
                'link'=>'tablet'
            ),
            array(
                'name'=>'About Us',
                'link'=>'about'
            ),
            array(
                'name'=>'Contact Us',
                'link'=>'contact'
            )
        );
        $res = "<ul>";
        $activePage = "";
        foreach($pages as $key=>$val)
        {
            if($val['link']==$active)
            {
                $res.= "<li><a href='".$val['link']."'  class='active'  >".$val['name']."</a></li>";
            }
            else
            {
                $res.= "<li><a href='".$val['link']."'>".$val['name']."</a></li>";          
            }
        }
        $res.="</ul>";
        return $res;
    }
    

    And then to call this function

    echo createTopNav("about");
    

    and the output will be like this

    <ul>
       <li><a href="index">Home</a></li>
       <li><a href="smartphone">Smartphone</a></li>
       <li><a href="tablet">Tablet</a></li>
       <li><a href="about" class="active">About Us</a></li>
       <li><a href="contact">Contact Us</a></li>
    </ul>
    
    0 讨论(0)
  • 2020-12-02 22:02

    Create a variable in each of your php file like :

    $activePage = "sauna"; (different for each page)
    

    then check that variable in your html page like this

    <?php if ($activePage =="sauna") {?>
     class="active" <?php } ?>
    
    0 讨论(0)
  • 2020-12-02 22:04

    this method gets the current page using php which will pass a word in this case active and places it inside the class parameter to set the page active.

    <?php
    function active($currect_page){
      $url_array =  explode('/', $_SERVER['REQUEST_URI']) ;
      $url = end($url_array);  
      if($currect_page == $url){
          echo 'active'; //class name in css 
      } 
    }
    ?>
    <ul>
        <li><a class="<?php active('page1.php');?>" href="http://localhost/page1.php">page1</a></li>
        <li><a class="<?php active('page2.php');?>" href="http://localhost/page2.php">page2</a></li>
        <li><a class="<?php active('page3.php');?>" href="http://localhost/page3.php">page3</a></li>
        <li><a class="<?php active('page4.php');?>" href="http://localhost/page4.php">page4</a></li>
    </ul>
    
    0 讨论(0)
提交回复
热议问题