PHP菜单在独立工作,但不包括在内

时间:2014-08-27 17:35:01

标签: php html css

我正在开发一个网站,并在主页中包含两个菜单。主页,两个菜单的扩展名为.php。我在Apache服务器上进行本地测试。

问题:我的一个菜单(顶部导航栏)在我的本地服务器上正确显示,但其菜单项/链接无法点击且不显示翻转效果。这仅在我通过PHP加载菜单加载主页时。 当我加载菜单页面本身(仍在我的本地服务器上)时,问题不存在,我的菜单显示并正常工作,包括链接。

请参阅以下代码:

首页

<!doctype html>
<html>
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" >

<title>Home</title>

<!-- various css imports, removed for readability -->

</head>

 <body id="home">

 <?php include('top-bar.php'); ?>

 <!-- Container div -->
 <div id="container">

<?php include('menu.php'); ?>

<!-- Container div -->
</div>

</body>
</html>

菜单栏

<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<!-- various css imports, removed for readability -->

<title>Topbar</title>
</head>


<body id="home">

<div id="headerbar">

      <!-- Centered container -->
      <div id="container">

      <!-- Top bar -->
      <div id="header">


        <div id="maintitle">
            <span style="color: #499DF5">My</span><span style="color: #FFFFFF"> Name</span>     </div>

         <!-- Second menu bar -->
        <div id="menutop">
            <ul>
               <li id="contactme" title="Write me an email"><a href='#'><span>Contact me</span></a></li>

               <li class="last" id="vcf"><a href="#" onClick="MyWindow=window.open('contact-card-popup.html','MyWindow','width=300,heig‌​ht=150'); return false;" title="Download my contact card (.vcf or .csv)">Download
  contact card</a></li>

               <li class="last" style="float: right;" id="googleplus"><a target="_blank" title="Follow me on Google+" href="https://plus.google.com/u/0/114402922247766544960/posts">
        <i class="fa fa-google-plus fa-fw"></i></a></li>


                <li style="float: right;" id="linkedin"><a target="_blank" title="View my LinkedIn profile" href="http://www.linkedin.com/in/myprofile">
        <i class="fa fa-linkedin fa-fw"></i></a></li>

                <li style="float: right;" id="visualize.me"> <a target="_blank" href='http://vizualize.me/myprofile?r=myprofile' title='View my infographic resume on Vizualize.me'><span style="font-weight:bold">Visualize.me</span></a></li>   

            </ul>
        </div>  <!-- End Second menu bar -->

        <div id="jobtitle">Jobtitle</div>

         <!-- End header div -->
        </div>

        <!-- End Centered container -->
        </div>

 <!-- End headerbar div -->
 </div>

</body>
</html>

和CSS:

/* Layout
-----------------------------------------------------------------------------*/
body {

}


#container {
width:1020px;
position:relative;
min-height: 100%;
height: auto !important;
height: 100%;
margin: 0 auto -100px;
}

#headerbar{
width:100%;
min-width:500px;
height:130px;
position:absolute;
background: #414141;
}

#menutop {
min-width:500px;
width:1020px;
position:absolute;
margin-top:20px;
}

#wrapper {
clear:both;
height:900px;
width:1020px;
position:relative;
margin: 0 0 0 -25px;
}


/* Top menu: header
-----------------------------------------------------------------------------*/

#header {
font-family:'Open Sans', sans serif;
}

#maintitle {
font-weight:bold;
font-size:34px;
width:250px;
height:40px;
min-height:60px;
position:relative;
margin-left:40px;
margin-top:25px;
}

#jobtitle {
color: #FFFFFF;
font-size: 14px;
width: 230px;
height: 25px;
position: absolute;
margin-left: 270px;
margin-top: 9px;
left: 16px;
top: 36px;
}

我尝试替换我的php include

<?php include('top-bar.php'); ?>

使用相对于根的链接:

 <?php include($_SERVER['DOCUMENT_ROOT']."/my-website/top-bar.php"); ?>

这没有改变任何事情。

我也对W3C进行了验证,以防万一它会抛出任何明显的错误,但事实并非如此。

关于为什么PHP菜单在独立工作但不包含在内的任何想法?谢谢。

修改

在Moshe的一个很好的建议中,我更新了他创建的JSFiddle。因为我似乎不能在那里使用几个文件,所以我将顶层菜单的代码放在主页中,执行php导入。这样做会使菜单中的链接无法正常工作,因此听起来像CSS问题。然而,我没有看到问题出在哪里。

http://jsfiddle.net/0ows5vym/4/

这只是菜单,独立工作正常:http://jsfiddle.net/fdbvwL3t/

注意:请指示菜单最右侧未显示的图标,它们基于其他我无法轻易复制的导入。那部分在当地运作良好。

3 个答案:

答案 0 :(得分:0)

您可以使用dirname( FILE )获取当前目录。

尝试使用

include(dirname(__FILE__). "/my-website/top-bar.php") 

而不是$ _SERVER [&#39; DOCUMENT_ROOT&#39;]

FILE 常量将为您提供当前文件的绝对路径 和dirname( FILE )获取当前包含文件的目录

答案 1 :(得分:0)

你想在哪个文件中加载你的php文件?

如果它在你的index.php(可能)中, 那么你需要考虑你面向你拥有它的文件的路径

让我们假设:

你有一个index.php的绝对路径,如

/var/www/html/thisismywebsite/index.php

,您的文件位于

/var/www/html/thisismywebsite/project/someinnerfolder/topbar.php

以上不会解决它。

相反,您可以选择像

这样的解决方案
<?php
define('BASEPATH', dirname(__FILE__) . "/");

include(BASEPATH . "project/someinnerfolder/topbar.php");

请记住,包含必须与您的应用程序的入口点相关,因此您的包含必须与您启动应用程序的位置相关。

奖金:

不要使用标记启动所有文件,依此类推,因为它会在以后为您提供问题。相反,选择使用主人来保持这种HTML

答案 2 :(得分:0)

我终于明白了。在这里玩JsFiddle:http://jsfiddle.net/0ows5vym/4/让我走上正轨。

我有一个“容器”元素被调用两次,一次在我的php菜单中,然后再次在主页面中。如果我希望能够多次调用它,那么我就错误地给了该容器一个唯一的ID,它应该是一个类。

用“class”替换容器“id”修复它,参见此处。 http://jsfiddle.net/0ows5vym/6/

<!-- Container div -->
<div class="container">

<?php include('menu.php'); ?>

<!-- Container div -->
</div>

Moshe - 谢谢你告诉我有关JsFiddle的事。我喜欢那个工具。你的建议也帮助我找到答案。