PHP - 将网站拆分为文件
PHP - Split website in to files
我目前正在开发一个网站,目的是了解更多信息,但我就是想不通这个,我也不知道要搜索什么,我什么也没找到。
基本上我有一个导航栏、一个内容框和一个页脚。我想把网站分成三个文件。这样一来,例如,我只需要编辑一个文件即可编辑所有页面上导航栏中的所有链接。
我可以简单地通过输入:
<?php include('navigation.php'); ?>
我想要的地方。
但是我的问题来了:在我拥有的每个页面上,我的导航栏应该更改其活动 page/tab 并突出显示它。
我的导航栏是这样的:
Home | News | About | Contact
当我单击 News
并登陆新闻页面时,它应该在导航栏中突出显示(通过 CSS)。但是,当我将导航栏放在一个文件中时,我该如何实现呢?然后它会在所有页面上突出显示它。这是我目前遇到的问题,我不知道这在 PHP?
中是否可行
感谢任何帮助!谢谢
最简单的方法:设置一个全局变量来表明你是 "where",然后让导航菜单检查它:
例如
index.php:
<?php
$PAGE = 'home';
include('navigation.php');
navigation.php:
<?php
...
if (isset($PAGE) && ($PAGE == 'home')) {
.... output "home" link with you-are-here highlight
} else {
... output regular home link.
}
您或许可以查看当前的 URL 并相应地在您的菜单项上添加活动的 class。
<?php
$url = basename($_SERVER['PHP_SELF']);
?>
然后当您生成菜单链接时,如下所示:
<li class='<?php echo ($url == "about.php") ? "active" : ""?>' >About</li>
类似的东西。
从p
URL句柄获取页面。检查是否允许,否则回家。
然后检查页面当前是否在菜单中处于活动状态,如果是;添加 class active
.
<?php
// Get the page from the url, example: index.php?p=contact
$page = $_GET['p'];
// Whitelist pages for safe including
$whitelist = array('home', 'news', 'about', 'contact');
// Page not found in whitelist
if (!in_array($page, $whitelist)):
$page = 'home';
endif;
include('header.php');
include('navigation.php');
include($page . '.php'); // Include page according to url
include('footer.php');
?>
<ul>
<li>
<a href="index.php?p=home" class="<?php if ($page === 'home'): ?>active<?php endif; ?>">
Home
</a>
</li>
<li>
<a href="index.php?p=news" class="<?php if ($page === 'news'): ?>active<?php endif; ?>">
News
</a>
</li>
<li>
<a href="index.php?p=about" class="<?php if ($page === 'about'): ?>active<?php endif; ?>">
About
</a>
</li>
<li>
<a href="index.php?p=contact" class="<?php if ($page === 'contact'): ?>active<?php endif; ?>">
Contact
</a>
</li>
</ul>
我目前正在开发一个网站,目的是了解更多信息,但我就是想不通这个,我也不知道要搜索什么,我什么也没找到。
基本上我有一个导航栏、一个内容框和一个页脚。我想把网站分成三个文件。这样一来,例如,我只需要编辑一个文件即可编辑所有页面上导航栏中的所有链接。
我可以简单地通过输入:
<?php include('navigation.php'); ?>
我想要的地方。 但是我的问题来了:在我拥有的每个页面上,我的导航栏应该更改其活动 page/tab 并突出显示它。
我的导航栏是这样的:
Home | News | About | Contact
当我单击 News
并登陆新闻页面时,它应该在导航栏中突出显示(通过 CSS)。但是,当我将导航栏放在一个文件中时,我该如何实现呢?然后它会在所有页面上突出显示它。这是我目前遇到的问题,我不知道这在 PHP?
感谢任何帮助!谢谢
最简单的方法:设置一个全局变量来表明你是 "where",然后让导航菜单检查它:
例如
index.php:
<?php
$PAGE = 'home';
include('navigation.php');
navigation.php:
<?php
...
if (isset($PAGE) && ($PAGE == 'home')) {
.... output "home" link with you-are-here highlight
} else {
... output regular home link.
}
您或许可以查看当前的 URL 并相应地在您的菜单项上添加活动的 class。
<?php
$url = basename($_SERVER['PHP_SELF']);
?>
然后当您生成菜单链接时,如下所示:
<li class='<?php echo ($url == "about.php") ? "active" : ""?>' >About</li>
类似的东西。
从p
URL句柄获取页面。检查是否允许,否则回家。
然后检查页面当前是否在菜单中处于活动状态,如果是;添加 class active
.
<?php
// Get the page from the url, example: index.php?p=contact
$page = $_GET['p'];
// Whitelist pages for safe including
$whitelist = array('home', 'news', 'about', 'contact');
// Page not found in whitelist
if (!in_array($page, $whitelist)):
$page = 'home';
endif;
include('header.php');
include('navigation.php');
include($page . '.php'); // Include page according to url
include('footer.php');
?>
<ul>
<li>
<a href="index.php?p=home" class="<?php if ($page === 'home'): ?>active<?php endif; ?>">
Home
</a>
</li>
<li>
<a href="index.php?p=news" class="<?php if ($page === 'news'): ?>active<?php endif; ?>">
News
</a>
</li>
<li>
<a href="index.php?p=about" class="<?php if ($page === 'about'): ?>active<?php endif; ?>">
About
</a>
</li>
<li>
<a href="index.php?p=contact" class="<?php if ($page === 'contact'): ?>active<?php endif; ?>">
Contact
</a>
</li>
</ul>