如何正确构造php导航栏

如何正确构造php导航栏,php,navbar,dir,Php,Navbar,Dir,我的根目录中有一个索引文件 我有一个叫pages的目录 导航栏位于includes目录中 如果我想在index.php以及位于pages目录中的每个pages.php中包含导航栏。什么是正确的方式来构造这个导航栏,这样php就可以通过它所在的页面上下移动目录了 每一页都标识为 $page = currentPage 这是我当前的导航栏,在includesdir中 <ul> <?php if ($page == 'home') { ?><li class="acti

我的根目录中有一个索引文件

我有一个叫pages的目录

导航栏位于includes目录中

如果我想在index.php以及位于pages目录中的每个pages.php中包含导航栏。什么是正确的方式来构造这个导航栏,这样php就可以通过它所在的页面上下移动目录了

每一页都标识为

$page = currentPage
这是我当前的导航栏,在includesdir中

<ul>
<?php if ($page == 'home') { ?><li class="active"><a href="index.php" class="active">Home</a></li>
<?php } else { ?><li><a href="../index.php">Home</a><?php } ?>

<?php if ($page == 'contact') { ?><li class="active"><a href="contact.php" class="active">Contact Us</a></li>
<?php } else { ?><li><a href="pages/contact.php">Contact Us</a><?php } ?>

<?php if ($page == 'services') { ?><li class="active"><a href="services.php" class="active">Services</a></li>
<?php } else { ?><li><a href="pages/services.php">Services</a><?php } ?>

<?php if ($page == 'employees') { ?><li class="active"><a href="employees.php" class="active">Employees</a></li>
<?php } else { ?><li><a href="pages/employees.php">Employees</a><?php } ?>

<?php if ($page == 'dashboard') { ?><li class="active"><a href="dashboard.php" class="active">Dashboard</a></li>
<?php } else { ?><li><a href="pages/dashboard.php">Dashboard</a><?php } ?>
</ul>
目录看起来像这样

根/包括

根/页

提前谢谢你的帮助。我意识到我可以做一些简单的事情来解决这个问题,但我真的想在将来了解这个问题

这是页面当前的布局方式:

<?php $page = 'contact'; ?>

<html>
<meta charset="utf-8"> 
<title>Contact Us</title>
<head>
<base href="http://www.mysite.com/Dir_IM_Working_on_root/pages/" />
<link rel="stylesheet" type="text/css" href="../css/styles.css" />
</head>

<body>
<div id="wrapper">

<div id="nav">
<?php include '../includes/nav.php'; ?>
</div><!-- CLOSING NAV DIV -->

<div id="main">

</div><!-- CLOSING MAIN DIV -->

<footer>
<?php include '../includes/footer.php'; ?>
</footer>

</div><!-- CLOSING WRAPPER DIV -->
</body>
</html>

联系我们

最简单的方法是在所有情况下输出绝对URL。(/test.php)

如果您想保留在子文件夹中运行站点的可能性,可以在所有路径前添加一个变量。可以将其更改为站点的当前位置

另一种方法是添加

<base href="http://www.example.org/subfolder/" />

添加到html代码中,并结合绝对URL相应地进行更改。所有URL都基于您在属性中输入的内容。这是一个非常优雅的解决方案,但影响很大,如果一个人没有受过网络链接方面的培训,这可能会令人惊讶

我认为没有“正确”的方法。Typo3使用基本标记变量,这很可能是我使用的方式。许多其他软件使用变量变量(或将路径包装在函数中——这只是实现相同功能的另一种方式)。试着用一些方法,选择一个我认为对你最有吸引力的方法

根据我的经验,几乎没有人使用的唯一东西是相对URL

更新 将此html与基本html标记结合使用

<ul>
<li<?php if ($page == 'home') echo ' class="active' ?>><a href="index.php">Home</a></li>
<li<?php if ($page == 'contact') echo ' class="active' ?>><a href="pages/contact.php">Contact Us</a></li>
<li<?php if ($page == 'services') echo ' class="active' ?>><a href="pages/services.php">Services</a></li>
<li<?php if ($page == 'employees') echo ' class="active' ?>><a href="pages/employees.php">Employees</a></li>
<li<?php if ($page == 'dashboard') echo ' class="active' ?>><a href="pages/dashboard.php">Dashboard</a></li>
</ul>
    > >
    您必须使用绝对URL。意思是
    /index.php
    /pages/contact.php
    等。对不起,后面的斜杠当然要省略。你可以把它放在任何文件夹中,它总是链接到相同的点。你的基本标签看起来怎么样?必须在值的末尾提供斜杠<代码>
不起作用,但是
我认为您的解决方案中的“页面”太多了。看看我在哪里输入了你的脑袋,没有“页面”和我答案的html。在我看来这很好。大多数框架的“趋势”是将所有调用重定向到
index.php
文件,并在
.htaccess
中进行配置,但这只在内部发生,在浏览器中是不可见的。此外,这并不能解决如何链接页面的问题,这也是Typo3使用base标记来获取帮助的原因。在我看来,现在的解决方案是非常好的。如果您使用多个单独的PHP文件,或者使用htaccess解决方案将所有请求收集到一个PHP文件中,您可能会决定另一个问题。