Как я могу вызвать файл master.php из папки без потери всех путей?

Я делаю сайт только с 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, потому что путь в основном файле находится в другом каталоге. Как я могу преодолеть это?

Это первый раз, когда я делаю что-то подобное, поэтому я не уверен, что то, что я сделал, — даже лучший способ сделать это.

0

Решение

Если ваш сайт прост, вы могли бы избежать сочетания относительных и абсолютных ссылок. Ваши ресурсы должны использовать абсолютную ссылку, как <link href="/assets/css/sticky-footer-navbar.css" rel="stylesheet"/> тогда как ссылки PHP могут быть относительными, как вы описали.

Однако он плохо масштабируется для более сложных приложений и может быстро стать сложным в управлении. Современные PHP-фреймворки используют PHP автозагрузка.

Если вам не нравится заново изобретать колесо, изучите такие хорошие рамки, как Laravel или же Yii. Они позаботятся об автозагрузке и многом другом.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]