使用php在菜单项上设置活动类

使用php在菜单项上设置活动类,php,html,menu,Php,Html,Menu,我有一个由元素组成的简单菜单,还有一个class=“active”标记当前页面。通过$\u get[]传递一个变量,以通过url选择特定页面:?pg=page 我对php相当陌生,还在学习。这很好,但我觉得应该有一个更简单、更短的方法 <ul class="nav"> <li <?php if ($_GET['pg'] == "PAGE1") { echo "class=\"active\""; } ?>><a href="?pg=PAGE1">

我有一个由
  • 元素组成的简单菜单,还有一个
    class=“active”
    标记当前页面。通过
    $\u get[]
    传递一个变量,以通过url选择特定页面:
    ?pg=page

    我对php相当陌生,还在学习。这很好,但我觉得应该有一个更简单、更短的方法

    <ul class="nav">
      <li <?php if ($_GET['pg'] == "PAGE1") { echo "class=\"active\""; } ?>><a href="?pg=PAGE1">FIRST PAGE</a></li>
      <li <?php if ($_GET['pg'] == "PAGE2") { echo "class=\"active\""; } ?>><a href="?pg=PAGE2">SECOND PAGE</a></li>
    </ul>
    
      >

    使用
    三元运算符

    <?
    $pg = $_GET['pg'];
    ?>
    
    <ul class="nav">
        <li <?=($pg=="PAGE1"?'class="active"':'')?>><a href="?pg=PAGE1">FIRST PAGE</a></li>
        <li <?=($pg=="PAGE2"?'class="active"':'')?>><a href="?pg=PAGE2">SECOND PAGE</a></li>
    </ul>
    
    
    

      您可以使用
      javascript/Jquery
      检查
      $\u get[]
      的值,并使用该值向
      li
      标记动态添加一个类。这将消除对每个
      li
      项目进行检查的需要,但可能对您来说有点复杂,因为您声明您刚刚接触过此项


      不管怎么说,既然你在学习,开始朝那个方向看也是件好事<代码>PHP和JS在大多数情况下都是齐头并进的…

      您可以将页面放入一个数组中,这样做会更简单:

      <ul class="nav">
      <?
      $pages = array();
      $pages[] = array("PAGE1","FIRST PAGE");
      $pages[] = array("PAGE2","SECOND PAGE");
      
      foreach($pages as $page) { ?>
          <li <?=(($_GET['pg'] == $page[0])?'class=\"active\"':'')?>><a href="?pg=<?=$page[0]?>"><?=$page[1]?></a></li>
      <? } ?>
      </ul>
      
      
      
        
        

          
          
          • 上传/image-22082017080213.png“height=“60”/ USMS
          • >
              > >
            >
              > >
            > > >
              > >` `
            >
              > >
            >>
              > > > >

          您正在执行N个操作来打印N个链接。执行更少的操作称为心灵感应0:-)其他任何操作都是对代码本身的优化,而不是逻辑。它假设启用了短标签。我工作过的任何自尊商店都不会这样做。@Madbreaks有趣的是,根据我的经验,不建议使用短标签上的95%短标签:--不是吗尽管在95%的计算机上启用了这些标记,但在其他5%的计算机上,您的代码仍将失败。完整标记将始终有效。请注意,我参与的大多数项目都启用了短标记,这是因为遗留原因,但也有编码约定,不允许在新代码中使用短标记。Op正在寻找如何改进服务器端代码。建议j查询作为一种解决方案近乎荒谬。哇,冷静下来@Madbreaks。糟糕的一天?我永远无法理解代码在这个例子中使用了这么多
          ,可能是的。但在实际代码中,你有更多的HTML,混合了JavaScript和CSS,将所有这些都放在PHP
          echo
          中是一场噩梦。你在一个视图中混合使用HTML、JS和CSS吗at听起来像是一场噩梦。不是我。通常我会尽可能地摆脱它。将PHP
          echo
          -s转换为类似模板的东西通常是第一步,HTML编码器可以做进一步的清理。
          <?php
              $pages = array(
                  'PAGE1' => 'FIRST PAGE',
                  'PAGE2' => 'SECOND PAGE');
          ?>
          
          <ul class="nav">
            <?php foreach ($pages as $pageId => $pageTitle): ?>
            <li <?=(($_GET['pg'] == $pageId) ? 'class="active"' : '')?>><a href="?pg=<?=$pageId?>"><?=$pageTitle?></a></li>
            <?php endforeach; ?>
          </ul>
          
          <?php
          
          $navItems = [
            '/' => 'Home',
            '/about' => 'About',
            '/contact' => 'Contact'
          ];
          
          function navItemClass($itemUri) {
            if ($_SERVER[REQUEST_URI] == $itemUri) {
              return 'is-active';
            }
            return '';
          }
          
          ?>
          
          <ul>
          <?php foreach ($navItems as $uri => name): ?>
            <li class="<?php echo navItemClass($uri); ?>">
              <a href="<?php echo $uri; ?>">
                <?php echo $name; ?>
              </a>
            </li>
          <?php endforeach; ?>
          </ul>
          
          <?php
          $server = $_SERVER['REQUEST_URI'];
          $pages = array(
              'all_page' => '/university/index.php/pages/all_page',
              'page_add' => '/university/index.php/pages/page_add',
              'menus' => '/university/index.php/pages/index',
              'menu' => '/university/index.php/pages/',
              'sliderAdd' => '/university/index.php/Slider/sliderAdd',
              'sliderView' => '/university/index.php/Slider/sliderView',
              'Future' => '/university/index.php/Slider/Future',
              'contact_us' => '/university/index.php/pages/contact_us',
              'newsAdd' => '/university/index.php/News/newsAdd',
              'newsView' => '/university/index.php/News/index',
              'eventsAdd' => '/university/index.php/Events/eventsAdd',
              'eventsView' => '/university/index.php/Events/index',
              'emailPhone' => '/university/index.php/Slider/emailPhone',
              'Logos' => '/university/index.php/Slider/Logo',
              'footer_change' => '/university/index.php/Slider/footer_change'
          );
          ?>
          <div class="nab">
              <div class="sidebar-collapse">
                  <ul class="nav metismenu" id="side-menu">
                      <li class="nav-header">
                          <div class="dropdown profile-element"> <span style="margin-left:-15px;"> 
                                  <img alt="image"  src="<?php echo base_url(); ?>upload/image-22082017080213.png" height="60" />
                              </span>
          
                          </div>
                          <div class="logo-element">
                              USMS
                          </div>
                      </li>
                      <!--            <li>
                                      <a href="<?php //echo site_url('dashboard/index');       ?>"><i class="fa fa-th-large"></i> <span class="nav-label">Dashboard</span></a>
                                  </li>-->
                      <li<?php
          extract($pages);
          if ($all_page == $server || $page_add == $server) {
              ?> class="active" <?php } ?>>
                          <a href=""><i class="fa fa-file-code-o"></i> <span class="nav-label">Pages </span> <span class="fa arrow"></span></a>
                          <ul class="nav nav-second-level collapse">
                              <li <?php if ($page_add == $server) { ?> class="active" <?php } ?>><a href="<?php echo site_url('pages/page_add'); ?>">Pages Add </a></li>
                              <li <?php if ($all_page == $server) { ?> class="active" <?php } ?>><a href="<?php echo site_url('pages/all_page'); ?>">All Pages</a></li>
          
          
                          </ul>
                      </li>
                      <li <?php if ($sliderAdd == $server || $sliderView == $server) { ?> class="active" <?php } ?>>
                          <a href=""><i class="fa fa-film"></i> <span class="nav-label">Slider</span> <span class="fa arrow"></span></a>
                          <ul class="nav nav-second-level collapse">
                              <li  <?php if ($sliderAdd == $server) { ?> class="active" <?php } ?>><a href="<?php echo site_url('Slider/sliderAdd'); ?>">Slider Add </a></li>
                              <li  <?php if ($sliderView == $server) { ?> class="active" <?php } ?>><a href="<?php echo site_url('Slider/sliderView'); ?>">Slider View</a></li>
          
          
                          </ul>
                      </li>
          
                      <li  <?php if ($Future == $server) { ?> class="active" <?php } ?>> 
                          <a href="<?php echo site_url('Slider/Future'); ?>"><i class="fa fa-cubes"></i> <span class="nav-label">Future</span></a>
                      </li>
          
          
          
          
                      <li <?php if ($contact_us == $server) { ?> class="active" <?php } ?>>
                          <a href="<?php echo site_url('pages/contact_us'); ?>"><i class="fa fa-map-marker"></i> <span class="nav-label">Contact Us</span></a>
                      </li>
          
                      <li <?php if ($newsAdd == $server || $newsView == $server) { ?> class="active" <?php } ?>>
                          <a href=""><i class="fa fa-newspaper-o"></i> <span class="nav-label">News</span> <span class="fa arrow"></span></a>
                          <ul class="nav nav-second-level collapse">
          
          
                              <li<?php if ($newsAdd == $server) { ?> class="active" <?php } ?>><a href="<?php echo site_url('News/newsAdd'); ?>">News Add</a></li>
                              <li <?php if ($newsView == $server) { ?> class="active" <?php } ?>><a href="<?php echo site_url('News/index'); ?>">All News</a></li>`
          `
                          </ul>
                      </li>
          
          
                      <li <?php if ($eventsAdd == $server || $eventsView == $server) { ?> class="active" <?php } ?>>
                          <a href=""><i class="fa fa-university"></i> <span class="nav-label">Events</span> <span class="fa arrow"></span></a>
                          <ul class="nav nav-second-level collapse">
          
          
                              <li <?php if ($eventsAdd == $server) { ?> class="active" <?php } ?>><a href="<?php echo site_url('Events/eventsAdd'); ?>">Events Add</a></li>
                              <li <?php if ($eventsView == $server) { ?> class="active" <?php } ?>><a href="<?php echo site_url('Events/index'); ?>">All Events</a></li>
                          </ul>
                      </li>
          
                      <li <?php if ($menus == $server || $menu == $server || $emailPhone == $server || $Logos == $server || $footer_change == $server) { ?> class="active" <?php } ?> >>
                          <a href=""><i class="fa fa-gear"></i> <span class="nav-label">Setting</span> <span class="fa arrow"></span></a>
                          <ul class="nav nav-second-level collapse">
          
          
                              <li <?php if ($emailPhone == $server) { ?> class="active" <?php } ?>><a href="<?php echo site_url('Slider/emailPhone'); ?>">Header Email And Phone Number#</a></li>
                              <li <?php if ($Logos == $server) { ?> class="active" <?php } ?>> <a href="<?php echo site_url('Slider/Logo'); ?>">Header Logo</a></li>
                              <li <?php if ($menus == $server || $menu == $server) { ?> class="active" <?php } ?> ><a href="<?php echo site_url('pages/index'); ?>">Menus</a></li>
                              <li <?php if ($footer_change == $server) { ?> class="active" <?php } ?>><a href="<?php echo site_url('Slider/footer_change'); ?>">Footer </a></li>
                          </ul>
                      </li>
                  </ul>
          
              </div>
          </div>