如何在不丢失所有路径的情况下从文件夹中调用 master.php 文件?
How can I call a master.php file from inside a folder without losing all the paths?
我正在制作一个只有 php 的网站。为了使页眉和页脚易于更新,我制作了一个 master.php
文件,内容如下:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no, maximum-scale=1, user-scalable=no">
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="../images/a-master-favicon.ico" alt="a-master-favicon" >
<title>Testing site</title>
<link href="assets/css/sticky-footer-navbar.css" rel="stylesheet"/>
<link rel="stylesheet" href="assets/css/head_footer.css" />
</head>
<body>
<?php $signed_request = $_POST['signed_request']; ?>
<?php if(empty($signed_request)): ?>
<?php include('header.php'); ?>
<?php else: ?>
<div id="eatSpace" style="margin-bottom: -175px;"></div>
<?php endif; ?>
<?php include($content); ?>
<?php if(empty($signed_request)): ?>
<?php include('footer.php'); ?>
<?php endif; ?>
<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="js/jquery.easing.1.3.js"></script>
<script src="js/jquery.animate-enhanced.min.js"></script>
</body>
</html>
首先 $signed_request
部分是这样我可以在通过 Facebook 加载某些内容时显示它,这不是问题所在。
问题是我的文件夹结构如下:
root
|
|--assets
| |
| |--css
| |--js
|
|--faqs
| |
| |--faqs-content.php
| |--index.php
|
|
|--footer.php
|--header.php
|--index-content.php
|--index.php
|--master.php
所以,当我调用 index.php
时,它看起来像这样:
<?php
$content = 'index-content.php';
include('master.php');
这又会调用 master.php
并加载整个站点。
但是,如果我尝试在另一个目录(即 faqs/
)中执行相同的操作并在那里调用 index.php
,那么代码看起来会略有不同:
<?php
$content = 'faqs-content.php';
include('../master.php');
除了没有 css 或 js 加载之外,这一切都很好,因为主文件中的路径位于不同的目录中。我该如何克服这个问题?
这是我第一次做这样的事情,所以我不确定我所做的是否是最好的方法。
如果您的网站很简单,您可以结合使用相对和绝对 link。您的资源必须使用绝对值 link,例如 <link href="/assets/css/sticky-footer-navbar.css" rel="stylesheet"/>
,而 PHP links 可以像您描述的那样是相对值。
但是,它不能很好地扩展到更复杂的应用程序,并且很快就会变得难以管理。现代 PHP 框架使用 PHP autoloading.
我正在制作一个只有 php 的网站。为了使页眉和页脚易于更新,我制作了一个 master.php
文件,内容如下:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no, maximum-scale=1, user-scalable=no">
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="../images/a-master-favicon.ico" alt="a-master-favicon" >
<title>Testing site</title>
<link href="assets/css/sticky-footer-navbar.css" rel="stylesheet"/>
<link rel="stylesheet" href="assets/css/head_footer.css" />
</head>
<body>
<?php $signed_request = $_POST['signed_request']; ?>
<?php if(empty($signed_request)): ?>
<?php include('header.php'); ?>
<?php else: ?>
<div id="eatSpace" style="margin-bottom: -175px;"></div>
<?php endif; ?>
<?php include($content); ?>
<?php if(empty($signed_request)): ?>
<?php include('footer.php'); ?>
<?php endif; ?>
<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="js/jquery.easing.1.3.js"></script>
<script src="js/jquery.animate-enhanced.min.js"></script>
</body>
</html>
首先 $signed_request
部分是这样我可以在通过 Facebook 加载某些内容时显示它,这不是问题所在。
问题是我的文件夹结构如下:
root
|
|--assets
| |
| |--css
| |--js
|
|--faqs
| |
| |--faqs-content.php
| |--index.php
|
|
|--footer.php
|--header.php
|--index-content.php
|--index.php
|--master.php
所以,当我调用 index.php
时,它看起来像这样:
<?php
$content = 'index-content.php';
include('master.php');
这又会调用 master.php
并加载整个站点。
但是,如果我尝试在另一个目录(即 faqs/
)中执行相同的操作并在那里调用 index.php
,那么代码看起来会略有不同:
<?php
$content = 'faqs-content.php';
include('../master.php');
除了没有 css 或 js 加载之外,这一切都很好,因为主文件中的路径位于不同的目录中。我该如何克服这个问题?
这是我第一次做这样的事情,所以我不确定我所做的是否是最好的方法。
如果您的网站很简单,您可以结合使用相对和绝对 link。您的资源必须使用绝对值 link,例如 <link href="/assets/css/sticky-footer-navbar.css" rel="stylesheet"/>
,而 PHP links 可以像您描述的那样是相对值。
但是,它不能很好地扩展到更复杂的应用程序,并且很快就会变得难以管理。现代 PHP 框架使用 PHP autoloading.