1

我是 PHP 和 HTML 的新手,我正在创建我的第一个网站,我发现我必须一遍又一遍地重复一个标题,所以我把它放在一个 'Header.php' 文件中并包含它现在我遇到了问题检查他们去了哪个页面。我需要知道他们转到了哪个页面,这样我就可以在他们转到的页面上放置一个“class="active"”。如果不是太长,我可能需要为我编写的代码。即使是一个显示所有元素的示例也会有所帮助。无论如何继承我的代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <title>Metamorphosis Design Free Css Templates</title>
        <meta name="keywords" content="" />
        <meta name="description" content="" />
        <input type="hidden" id="link_is_clicked" name="link_is_clicked" value="0"/> 
        <link href="styles.css" rel="stylesheet" type="text/css" media="screen" />
        <link rel="stylesheet" href="nivo-slider.css" type="text/css" media="screen" />
    </head>
    <body>
        <div id="bg_top">
            <div id="wrap_bg">
                <div id="wrap">
                    <div id="header">
                        <div id="menu">
                            <ul>
                                <li class="but1_menu"><a href="index.php"class="active">Home</a></li>
                                <li class="but2_menu"><a href="blog.php">Blog</a></li>
                                <li class="but3_menu"><a href="gallery.php">Gallery</a></li>
                                <li class="but4_menu"><a href="about.php">About Us</a></li>
                                <li class="but5_menu"><a href="contact.php">Contact Us</a></li>
                            </ul>
                        </div>
                        <div id="logo">
                            <h1><a href="#">metamorph_strongrey</a></h1>
                            <a href="#"><small>Small Company Slogan Goes Here</small></a>
                        </div>

谢谢你的帮助。

4

5 回答 5

3

当它是一个像你这样的小列表时,我通常会用一个简单的if声明:

<li class="but1_menu"><a href="index.php"<?=(($_SERVER['SCRIPT_NAME']=='index.php')?' class="active"':'');?>>Home</a></li>
<li class="but2_menu"><a href="blog.php"<?=(($_SERVER['SCRIPT_NAME']=='blog.php')?' class="active"':'');?>>Blog</a></li>
<li class="but3_menu"><a href="gallery.php"<?=(($_SERVER['SCRIPT_NAME']=='gallery.php')?' class="active"':'');?>>Gallery</a></li>
<li class="but4_menu"><a href="about.php"<?=(($_SERVER['SCRIPT_NAME']=='about.php')?' class="active"':'');?>>About Us</a></li>
<li class="but5_menu"><a href="contact.php"<?=(($_SERVER['SCRIPT_NAME']=='contact.php')?' class="active"':'');?>>Contact Us</a></li>

这将通过检查当前脚本的名称$_SERVER['SCRIPT_NAME'],如果匹配,它将 echo class="active"

于 2012-08-10T19:21:18.707 回答
2

第一步:获取用户正在访问的当前页面

$current_url = substr($_SERVER["SCRIPT_NAME"],strrpos($_SERVER["SCRIPT_NAME"],"/")+1);

第二步:创建一个包含所有菜单链接页面的数组

$all_urls = array('index.php', 'blog.php', 'gallery.php', 'about.php', 'contact.php');

第三步:检查当前url是否在数组内。如果是,请申请课程

<ul>        
    <li class="but1_menu"><a href="index.php" <?php if(in_array($current_url, $all_urls)){echo 'class="active"'; } ?>>Home</a></li>
    <li class="but2_menu"><a href="blog.php" <?php if(in_array($current_url, $all_urls)){echo 'class="active"'; } ?>>Blog</a></li>
    <li class="but3_menu"><a href="gallery.php" <?php if(in_array($current_url, $all_urls)){echo 'class="active"'; } ?>>Gallery</a></li>
    <li class="but4_menu"><a href="about.php" <?php if(in_array($current_url, $all_urls)){echo 'class="active"'; } ?>>About Us</a></li>
    <li class="but5_menu"><a href="contact.php" <?php if(in_array($current_url, $all_urls)){echo 'class="active"'; } ?>>Contact Us</a></li>    
</ul>
于 2012-08-10T23:30:36.527 回答
1

您所要做的就是放置在href您的锚标签的参数中<a>,这是一个指示按下哪个链接的查询字符串。

<a href="about.php?action=about">About Us</a>  

现在在您的 PHP 代码中,您需要查看$_GET变量. 它是 URL 中传递的所有参数的关联数组。所以$_GET['action']将等于about

当您再次编写标题并希望通过添加类来指示“活动”链接时,您只需测试变量的action元素即可。$_GET

让我们假设在你的头文件中你有一个这样的链接数组 -

$headerLinks = array(
  'about' => array(
     'href'=>'about.php?action=about',
     'title'=>'About Us' 
  ),
  'home' => array(
     'href'=>'home.php?action=home',
     'title'=>'Home' 
  ),
  'blag' => array(
     'href'=>'blag.php?action=blag',
     'title'=>'Our Blag' 
  ),
  ...
);

您将遍历该数组的内容以创建具有适当active课程的链接。

foreach($headerLinks AS $key => $link){
  $isActive = $_GET['action'] == $key? 'active' : '';
  echo '<a href="'.$link['href'].'" class="'.$isActive.'">'.$link['title'].'</a>';
}
于 2012-08-10T19:22:57.097 回答
0

还有一种方法。

你的页面看起来像

<?php 
   $curr = "gallery";
   include('header.php');
?>

其中 $curr 变量的值可以在下面的菜单中找到

现在菜单

                        <li class="but1_menu"><a <?php echo ($curr == "index" ? "class='active'" : "" ); ?> href="index.php">Home</a></li>
                        <li class="but2_menu"><a <?php echo ($curr == "blog" ? "class='active'" : "" ); ?> href="blog.php">Blog</a></li>
                        <li class="but3_menu"><a <?php echo ($curr == "gallery" ? "class='active'" : "" ); ?> href="gallery.php">Gallery</a></li>
                        <li class="but4_menu"><a <?php echo ($curr == "about_us" ? "class='active'" : "" ); ?> href="about.php">About Us</a></li>
                        <li class="but5_menu"><a <?php echo ($curr == "contact_us" ? "class='active'" : "" ); ?> href="contact.php">Contact Us</a></li>

为了保持代码干净,最好使用简短的 if/else 语句,因为没有复杂的东西。

我还建议您使用“活动”类,<li>但这取决于每个开发人员的风格。在一些复杂的菜单中,它会对您有很大帮助。

于 2012-08-11T15:41:10.237 回答
0

你应该看看这个页面:

http://php.net/manual/en/reserved.variables.server.php

特别是关于 REQUEST_URI 的部分,这将是您所需要的。只需在 if 或 case 语句中检查这一点,并根据需要应用您的类。

您只需要几行代码即可检查导航栏中的 uri。

于 2012-08-10T19:21:58.627 回答